Locatie voor Adapters

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

12/08/2011 19:25:56
Quote Anchor link
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?
 
PHP hulp

PHP hulp

27/11/2024 13:25:52
 
Kees Schepers

kees Schepers

12/08/2011 19:29:00
Quote Anchor link
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..
 

12/08/2011 19:46:50
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
./library
     /Zend -> Zend Framework folder
     /App
          /Auth
               Adapter.php
          /Captcha
               Captcha.php
               Adapter.php
Gewijzigd op 12/08/2011 19:47:34 door
 
Kees Schepers

kees Schepers

12/08/2011 20:25:34
Quote Anchor link
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.
 
Niels K

Niels K

13/08/2011 12:18:13
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
./models
    ./Table
        ./Row
    ./Auth/
        MyAdapter.php
    


Als je hem dan zo aanroept, wordt hij mits je include path goed staan netjes geimporteerd en geinstantieerd !

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php

$adapter
= new Auth_MyAdapter();
 

13/08/2011 12:24:58
Quote Anchor link
Oke, en waar kan ik dan mijn Models plaatsen (geen Adapters)?
 
Niels K

Niels K

13/08/2011 12:31:37
Quote Anchor link
Wat is je huidige structuur? Kan je die even plaatsen.. ?
 

13/08/2011 13:32:51
Quote Anchor link
Oke, dit is de huidige structuur van mijn website:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
./public_html
   application
      views
         scripts
            index
            error
         helpers
      models
      layouts
         scripts
      forms
      controllers
      configs
   library
      Zend
   public
      css
      images
      flash
 
Niels K

Niels K

13/08/2011 13:56:58
Quote Anchor link
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?
 

13/08/2011 14:14:07
Quote Anchor link
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 ;)
 
Niels K

Niels K

13/08/2011 14:16:28
Quote Anchor link
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?
 

14/08/2011 15:10:33
Quote Anchor link
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
 
Niels K

Niels K

15/08/2011 19:30:15
Quote Anchor link
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)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
    }
}


?>


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
 

15/08/2011 20:37:09
Quote Anchor link
Ja, maar alles wat hier staat, word dus gedaan in mijn 'Adapter'.
Gewijzigd op 15/08/2011 20:37:22 door
 
Niels K

Niels K

15/08/2011 21:09:42
Quote Anchor link
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 K
 
Pim -

Pim -

16/08/2011 12:47:40
Quote Anchor link
Kom op Niels: niets mis met een beetje meer abstractie toch?
 
Niels K

Niels K

20/08/2011 16:54:48
Quote Anchor link
@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?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.