Zend Framework 2, waar te beginnen?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Uhmmie
  • Registratie: Januari 2000
  • Laatst online: 20-08 17:30
Aangezien ik nogal 'vast geroest' zit in het PEAR framework, leek het me wel eens tijd om rond te gaan kijken naar andere php frameworks.

Nu leek zend framework 2 me wel intressant, maar de enige duidelijke uitleg die ik kon vinden (http://akrabat.com/wp-con...with-Zend-Framework-2.pdf) lijkt niet meer goed overeen te komen, met de bestanden die je download.

En aangezien je nogal wat stappen moet doorlopen voor je het aan de gang hebt, is het dus niet handig als de benodigde aanpassingen totaal niet overeenkomen met de bestanden die je moet uitbreiden.

Dus hopelijk heeft iemand anders hier een duidelijke tutorial om leren om te gaan met ZF2 :).

Currently playing: MTG Arena (PC)


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 16:28
Goed uitgangspunt is de voorbeeld app: https://github.com/zendframework/ZendSkeletonApplication

Daarnaast is aanwezigheid op IRC ook aan te raden (#zftalk.2 op freenode)

offtopic:
enigzins korte post, maar wellicht kan je er al mee vooruit ;)

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • Uhmmie
  • Registratie: Januari 2000
  • Laatst online: 20-08 17:30
Freeaqingme schreef op zondag 08 juli 2012 @ 20:01:
Goed uitgangspunt is de voorbeeld app: https://github.com/zendframework/ZendSkeletonApplication

Daarnaast is aanwezigheid op IRC ook aan te raden (#zftalk.2 op freenode)

offtopic:
enigzins korte post, maar wellicht kan je er al mee vooruit ;)
Die PDF met uitleg die ik gevonden had is idd op basis van die skeleton application. Maar de code in die PDF komt niet overeen met de code die daadwerkelijk in de PDF staat. Dus die tutorial gaat helaas niet meer op :(

Currently playing: MTG Arena (PC)


Acties:
  • 0 Henk 'm!

  • japaveh
  • Registratie: Maart 2003
  • Laatst online: 10:41

japaveh

Jield BV

Dat zal vooral komen omdat de afgelopen week het ZF2 beta5 is uitgekomen waarin een aantal basis-elementen (plugins bijvoorbeeld) anders behandeld worden.

Meestal is de auteur (Rob Allen) zeer snel met het bijwerken dus een beetje geduld en de PDF is weer bruikbaar. Je kunt hem op Twitter volgen om meer informatie te krijgen.

Via Twitter krijg je ook veel informatie over ZF2 (hashtag #ZF2)

Update, daar is de verbeterde versie van de PDF al: http://akrabat.com/zend-f...-zf2-tutorial-for-beta-5/

[ Voor 12% gewijzigd door japaveh op 09-07-2012 13:38 . Reden: Bijgewerkt met update van de PDF ]

Solo Database: Online electronic logbook and database system for research applications


Acties:
  • 0 Henk 'm!

  • Uhmmie
  • Registratie: Januari 2000
  • Laatst online: 20-08 17:30
Kan iemand mij uitleggen wat het voordeel nu eigenlijk is van doctrine 2 vs zend db in zf2? Ik heb namelijk net die skeletonapp + pdf voorbeeld uitgewerkt en daarna een andere tutorial gevolgd waar die app weer omgebouwd wordt van zend db naar doctrine, maar ik zie er nog niet echt het voordeel van in?

[ Voor 175% gewijzigd door Uhmmie op 12-07-2012 19:34 ]

Currently playing: MTG Arena (PC)


Acties:
  • 0 Henk 'm!

  • Uhmmie
  • Registratie: Januari 2000
  • Laatst online: 20-08 17:30
Hoe maak ik nu een fieldset aan bij een $form object? Ik zit te googlen maar ik kom alleen maar zf1 voorbeelden tegen :(

Currently playing: MTG Arena (PC)


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:43

Ventieldopje

I'm not your pal, mate!

Uhmmie schreef op woensdag 11 juli 2012 @ 15:32:
Kan iemand mij uitleggen wat het voordeel nu eigenlijk is van doctrine 2 vs zend db in zf2? Ik heb namelijk net die skeletonapp + pdf voorbeeld uitgewerkt en daarna een andere tutorial gevolgd waar die app weer omgebouwd wordt van zend db naar doctrine, maar ik zie er nog niet echt het voordeel van in?
Durf zo niet zwart op wit te zeggen wat de verschillen zijn of welke beter is maar ik moet zeggen dat ik Doctrine 2 toch een gigantische verademing vond tegenover Zend_DB in ZF1. Nou is Zend_DB volgensmij compleet op de schop gegaan in ZF2 dus daar durf ik eigenlijk niks over te zeggen.

Vaak kom je er pas echt achter wat voor (soms grote) verschillen er in ORM's zitten als je complexe situaties heb. Over het algemeen zullen ze het beide prima doen maar ik weet dat je met Doctrine 2 behoorlijk complexe situaties kan maken.

Zend_DB is natuurlijk maar een onderdeel van het complete framework waardoor ik bang ben dat het een beetje een ondergeschoven kindje is en niet de aandacht krijgt die het nodig heeft waar als Doctrine 2 actief ontwikkelt wordt en ook een aparte DBAL en ORM heeft.

Zo kun je voor kleine projecten er voor kiezen alleen de DBAL te gebruiken en voor grotere projecten hun DBAL + ORM te gebruiken ;) Waar als Zend_DB (voor zover ik weet) in een gedeelte komt.

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Uhmmie
  • Registratie: Januari 2000
  • Laatst online: 20-08 17:30
Gisteren via een collega de tip gekregen dat je Doctrine (in zf2) de tabellen in mysql kan laten genereren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public function installAction()
    {
        $metaDatas = $this->getEntityManager()->getMetadataFactory()->getAllMetadata();
        $entities = array();
        foreach($metaDatas as $metaData) {
            $name = $metaData->getName();
            if (strpos($name, 'Entity') !== false) {
                    $entities[] = $metaData;
            }
        }
        if (!empty($entities)) {
            $tool = new \Doctrine\ORM\Tools\SchemaTool($this->getEntityManager());
            $tool->updateSchema($entities);
        }
        //....

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Album implements InputFilterAwareInterface 
{
    protected $inputFilter;
    
    /**
      * @ORM\Id @ORM\Column(name="album_id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(name="artist", type="string")
     */
    protected $artist;

    /**
     * @ORM\Column(name="title", type="string")
     */
    protected $title;

code:
1
2
3
4
5
6
+----------+----------------+---------------+
| album_id | artist         | title         |
+----------+----------------+---------------+
|        7 | The Artist     | My Title      |
|        8 | Another Artist | Another Title |
+----------+----------------+---------------+

Opzich werkt het prima, maar waarom hebben ze hier gekozen om de logica te laten lopen via comments/metadata?
Gevoelsmatig vind ik dit een vrij aparte werkwijze?
Na mijn idee is van comments hier niet voor bedoeld?

Stel ik verwijder eerst de kolom titel in mijn code.
Vervolgens voeg ik een kolom label toe.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /**
     * @ORM\Id @ORM\Column(name="album_id", type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\Column(name="artist", type="string")
     */
    protected $artist;

    /**
     * @ORM\Column(name="label", type="string")
     */
    protected $label;

code:
1
2
3
4
5
6
+----------+----------------+---------------+
| album_id | artist         | label         |
+----------+----------------+---------------+
|        7 | The Artist     | My Title      |
|        8 | Another Artist | Another Title |
+----------+----------------+---------------+

De data uit titel(die niet meer bestaat) zit nu in eens in mijn kolom label?
Ik weet niet of ik iets over het hoofd zie, maar ik vind dat vrij ongewenst gedrag.
Iemand enig idee waarom dit gebeurd? En is dit op een of andere manier af te vangen?
Zonder dat ik de implementatie van doctrine moet overrulen? Want dan kan ik weer net zogoed naar zend DB terug gaan?

Currently playing: MTG Arena (PC)


Acties:
  • 0 Henk 'm!

  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 11-09 16:13
Ik weet niet hoe Zend er mee omgaat, maar bij Symfony2 is het zo - welke ook Doctrine gebruikt - dat je na een wijziging in je entity laag je via de command line een commando kan geven om je schema te updaten. Ik vermoed dat jij een soortgelijk iets moet doen.

Wat betreft de configuratie via de commens: dat zijn annotations.

Acties:
  • 0 Henk 'm!

  • hostname
  • Registratie: April 2009
  • Laatst online: 15:38
Uhmmie schreef op vrijdag 13 juli 2012 @ 22:15:
Opzich werkt het prima, maar waarom hebben ze hier gekozen om de logica te laten lopen via comments/metadata?
Gevoelsmatig vind ik dit een vrij aparte werkwijze?
Na mijn idee is van comments hier niet voor bedoeld?
Dat is zo gedaan omdat PHP geen andere manier ondersteund om deze metadata direct in de code te plaatsen. Als het je niet bevalt kan je deze metadata echter ook in externe XML, YAML of PHP bestanden plaatsen. Heeft wel iets meer configuratie nodig en vind ik persoonlijk lastiger werken: je hebt de informatie over je tabellen nu in twee plaatsen staan.
Uhmmie schreef op vrijdag 13 juli 2012 @ 22:15:
De data uit titel(die niet meer bestaat) zit nu in eens in mijn kolom label?
Ik weet niet of ik iets over het hoofd zie, maar ik vind dat vrij ongewenst gedrag.
Iemand enig idee waarom dit gebeurd? En is dit op een of andere manier af te vangen?
Zonder dat ik de implementatie van doctrine moet overrulen? Want dan kan ik weer net zogoed naar zend DB terug gaan?
Deze feature is dan ook alleen maar bedoeld om tijdens development snel je database schema te kunnen aanpassen als je iets hebt gewijzigd. Daar maakt het over het algemeen niet uit als het misgaat in een aantal uitzonderingsgevallen - je kan het over het algemeen makkelijk handmatig fixen. Verder weet ik niet hoe het bij ZF2 zit, maar bij Symfony krijg je ook altijd nog de SQL te zien voordat hij uitgevoerd word, dus kan je de actie ook stoppen als hij een verkeerde upgrade gaat doen.

Het gebruiken van deze tool voor het updaten van productieservers wordt afgeraden. In plaats daarvan zijn er de zogenaamde migrations. Deze zou dit probleem niet moeten hebben en bied in ieder geval de mogelijkheid aan om de update-routine handmatig in een config file aan te passen.
Pagina: 1