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?
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..
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
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.
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.. ?
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?
Edit: Nee, de naam public_html is natuurlijk niet de naam van mijn project ;)
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?
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
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 K
Gewijzigd op 15/08/2011 21:21:46 door Niels K
Kom op Niels: niets mis met een beetje meer abstractie toch?
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?