Reminder: hoe een nieuwe site op te zetten met ZF2

Ben goed thuis in Zend Framework 1 – heb daarin behoorlijk wat sites ontwikkeld. De nieuwe versie van ZF2, nu twee maanden oud, is ingrijpend gewijzigd. Omdat ik elke keer moet opzoeken wat ook alweer de beste manier is om een nieuw project te starten, notuleer ik maar even de stappen:

  1. Maak een nieuwe map aan voor je project
  2. Download en installeer composer, het gemakkelijkst gewoon in je terminal:
    curl -s https://getcomposer.org/installer | php
  3. Gebruik Composer om de ZF standaardapplicatie en het framework zelf te installeren:
    php composer.phar create-project --repository-url="http://packages.zendframework.com" zendframework/skeleton-application
  4. Composer doet suggesties voor aanvullende bibliotheken en modules; de enige suggestie die ik standaard overneem, is doctrine/common, omdat deze de annotatiefunctionaliteit van Zend Form mogelijk maakt. Voeg aan de 'require'-sectie in het composer.json bestand toe:
    "doctrine/common": "dev-master",
    "bjyoungblood/bjy-profiler": "dev-master",
    "zendframework/zend-developer-tools": "dev-master"
  5. Voer achtereenvolgens de commando's in:
    php composer.phar self-update
    php composer.phar update

    Doctrine, alsmede de twee extra modules worden gedownload en geïnstalleerd. Deze moeten overigens nog wel geactiveerd worden in je applicatie.

  6. Kopieer alle bestanden uit de skeleton-applicatie naar je projectmap; de skeleton-map kun je weggooien
  7. Kopieer het configuratiebestand van Zend Developer Tools naar ./config/autoload; verwijder de extensie dist, zodat het bestand gevonden kan worden door ZF
  8. Pas ten slotte je module lijst aan. Mijn PHP-configuratiebestand ziet er nu zo uit:
    return array(
        'modules' => array(
            'Application',
            'ZendDeveloperTools',
            'BjyProfiler'
        ),
        'module_listener_options' => array(
            'config_glob_paths'    => array(
                'config/autoload/{,*.}{global,local}.php',
            ),
            'module_paths' => array(
                './module',
                './vendor',
                './vendor/bjyoungblood',
            ),
        ),
    );