Locatie voor Adapters
Ik heb net een Zend Auth Adapter gemaakt. Deze communiceert met mijn users model. Ik heb alleen even een vraag. Wat is de beste plaats om deze Adapter neer de zetten? Het is tenslotte een database class. Wat is de officiƫle locatie in het MVC model?
Gesponsorde koppelingen:
He Allard,
Zoals ik je al uitgelegd had, kun je het beste een eigen directory maken voor je eigen klassen. Dus je maakt dan bijvoorbeeld een map 'Allard' in de map library. Dan wordt het pad dus: library/Allard/Auth/Adapter.php.
Want vind het niet echt een database klasse..
Zoals ik je al uitgelegd had, kun je het beste een eigen directory maken voor je eigen klassen. Dus je maakt dan bijvoorbeeld een map 'Allard' in de map library. Dan wordt het pad dus: library/Allard/Auth/Adapter.php.
Want vind het niet echt een database klasse..
Oke, ik heb inmiddels mijn eigen klasse zo ingedeeld. De naam App word veel gebruikt. Zo zag ik deze naam ook terug komen om ZendCasts.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
./library
/Zend -> Zend Framework folder
/App
/Auth
Adapter.php
/Captcha
Captcha.php
Adapter.php
/Zend -> Zend Framework folder
/App
/Auth
Adapter.php
/Captcha
Captcha.php
Adapter.php
Gewijzigd op 12/08/2011 19:47:34 door Allard Jansen
Ja klopt, maar meer omdat het om voorbeelden gaat. Het maakt niet zoveel uit wat voor naam je die map geeft, en er zijn voor naamgeving van dit onderdeel niet echt ook standaarden. De meeste verzinnen zelf een projectnaam oid als namespace.
In je library plaatsen? Welnee, dat is onnodig.. Alleen Zend is een library.
Als je een eigen adapter maakt moet je die gewoon in het mapje plaatsen waar de rest van de models zich bevinden..
Dus dan krijg je:
Als je hem dan zo aanroept, wordt hij mits je include path goed staan netjes geimporteerd en geinstantieerd !
Als je een eigen adapter maakt moet je die gewoon in het mapje plaatsen waar de rest van de models zich bevinden..
Dus dan krijg je:
Als je hem dan zo aanroept, wordt hij mits je include path goed staan netjes geimporteerd en geinstantieerd !
Oke, en waar kan ik dan mijn Models plaatsen (geen Adapters)?
Wat is je huidige structuur? Kan je die even plaatsen.. ?
Oke, dit is de huidige structuur van mijn website:
Is 'public_html' je project naam?
Ziet er voor de rest opzich goed uit. Zelf gebruik ik nog iets anders maar goed dat ik meer persoonlijk keuze.
In je map 'models' kan je gewoon je eigen adapters plaatsen. Aangezien je een eigen Auth adapter heb geschreven kan je een nieuw map Auth aanmaken en daarin je adapter neerzetten.
Wat ik me wel even afvraag, zomaar tussen door. Waarom heb je zelf een auth adapter geschreven? Wat voor meerwaarde heeft het op de huidige functionaliteit van Zend?
Ziet er voor de rest opzich goed uit. Zelf gebruik ik nog iets anders maar goed dat ik meer persoonlijk keuze.
In je map 'models' kan je gewoon je eigen adapters plaatsen. Aangezien je een eigen Auth adapter heb geschreven kan je een nieuw map Auth aanmaken en daarin je adapter neerzetten.
Wat ik me wel even afvraag, zomaar tussen door. Waarom heb je zelf een auth adapter geschreven? Wat voor meerwaarde heeft het op de huidige functionaliteit van Zend?
Sorry, ik gebruik de natuurlijk de Zend Auth Adapter. Maar in mijn eigen adapter staat een functie genaamd authenticate. Deze functie kijkt, of alle gegevens juist zijn. Het resultaat geeft hij terug aan de Controller.
Edit: Nee, de naam public_html is natuurlijk niet de naam van mijn project ;)
Edit: Nee, de naam public_html is natuurlijk niet de naam van mijn project ;)
Ik neem aan de je de Zend_Auth_Adapter extend in je eigen Auth_Adapter ? Maar waarom gewoon niet de standaard Zend_Auth authenticatie mogelijkheid? Je hebt naar mijn weten dan niet eens een extra adapter nodig.
Is 'public_html' niet de naam van je project? Dan staat alles in de verkeerde map? Want wat staat er boven de map 'public_html' dan?
Is 'public_html' niet de naam van je project? Dan staat alles in de verkeerde map? Want wat staat er boven de map 'public_html' dan?
Alles staat in de root van mijn webserver. Ik werkt namelijk met mijn eigen webserver, niet met XAMPP of iets anders...
Dan nog even over mijn 'Auth Adapter'. Het lijkt een beetje op deze Adapter:
https://github.com/harikt/zendblog/blob/master/application/models/AuthAdapter.php
Dan nog even over mijn 'Auth Adapter'. Het lijkt een beetje op deze Adapter:
https://github.com/harikt/zendblog/blob/master/application/models/AuthAdapter.php
Ok. Dus 'public_html' is de 'html' folder van je webserver? Maar wanneer je meerdere projecten op die server gaat draaien, hoe ga je dat fixen dan?
De Adapter is ook nergens voor nodig.. Dat kan gewoon met de standaard functionaliteit van Zend_Auth.
Probeer het volgende maar eens: (Uit het hoofd, dus er kunnen fouten in zitten)
Let op: Het is nog niet op en top beveiligd met Salt + Pepper en dat soort methodes.
De Adapter is ook nergens voor nodig.. Dat kan gewoon met de standaard functionaliteit van Zend_Auth.
Probeer het volgende maar eens: (Uit het hoofd, dus er kunnen fouten in zitten)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if ($this->getRequest()->isPost()) {
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get('db'), 'tabel-naam', 'gebruikersnaam', 'wachtwoord');
$authAdapter->setIdentity($this->getRequest()->getParam('gebruikersnaam'));
$authAdapter->setCredential(sha1($this->getRequest()->getParam('wachtwoord')));
$authenticate = $this->auth->authenticate($authAdapter);
if (!$authenticate->isValid()) {
// Mislukt
} else {
// Gelukt
}
}
?>
if ($this->getRequest()->isPost()) {
$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get('db'), 'tabel-naam', 'gebruikersnaam', 'wachtwoord');
$authAdapter->setIdentity($this->getRequest()->getParam('gebruikersnaam'));
$authAdapter->setCredential(sha1($this->getRequest()->getParam('wachtwoord')));
$authenticate = $this->auth->authenticate($authAdapter);
if (!$authenticate->isValid()) {
// Mislukt
} else {
// Gelukt
}
}
?>
Let op: Het is nog niet op en top beveiligd met Salt + Pepper en dat soort methodes.
Gewijzigd op 15/08/2011 19:31:13 door Niels Kieviet
Ja, maar alles wat hier staat, word dus gedaan in mijn 'Adapter'.
Gewijzigd op 15/08/2011 20:37:22 door Allard Jansen
Ja, dat klopt. Maar dat is dus overbodig.. Omdat die functionaliteit al bestaat. Scheelt ook weer in snelheid .. ;)
Gewijzigd op 15/08/2011 21:21:46 door Niels Kieviet
Kom op Niels: niets mis met een beetje meer abstractie toch?
@Pim
Sorry, voor de late reactie maar toch nog even mijn mening.
Ik vind dat onnodig. Zend heeft daarvoor al een adapter / standaard functionaliteit, dan is het toch niet nodig om dat nogmaals te maken?
Sorry, voor de late reactie maar toch nog even mijn mening.
Ik vind dat onnodig. Zend heeft daarvoor al een adapter / standaard functionaliteit, dan is het toch niet nodig om dat nogmaals te maken?



