PHP:Zend-Framework

Aus Alexander's Wiki

{{#ev:youtube|Aw28-krO7ZM|300|right|PHP: MVC-Pattern}}

Zend Framework

{{#ev:youtube|V849D9aYOo8|300|right|PHP: Zend Framework mit MVC-Pattern}}

Vorbedingung

php im Pfad

php muss von überall aus der Kommandozeile aus aufgerufen werden können. Deshalb ist das Verzeichnis in den Pfad mit aufzunehmen.

php.ini anpassen

In der php.ini gibt es unter dem Abschnitt Paths and Directories die Möglichkeit weitere Pfade anzupassen. Für Windows würde man folgendes eintragen:

include_path=".;C:\DEVELOPMENT\Hagleitner\git-checkout\ZendFramework-2.2.2\library"

Zu beachten ist das ".;". Das ist erforderlich um den bestehenden Pfad zu erhalten.

Außerdem benötigt man beim Einsatz von Composer noch die SSL-Unterstützung. Die aktiviert man durch aktivieren von:

extension=php_openssl.dll

mod_rewrite im Apache

Es muss im Apache-Webserver die Erweiterung mod_rewrite aktiviert sein. Ggf. muss man die httpd.conf anpassen und AllowOverride von None in FileInfo ändern.

Composer installieren

http://getcomposer.org/ ist mit im GIT-Repository

Skeleton

php composer.phar create-project --repository-url="http://packages.zendframework.com" -s dev zendframework/skeleton-application <pfad>

Kopieren in das htdocs-Verzeichnis des Webservers und dessen URL mit public aufrufen. Dann sollte die Zend Framework Seite erscheinen. Hängt man an die URL dann noch z.B. 1234 an, muss die Fehlerseite des Zend Framework erscheinen, dann stimmt die .htaccess-Datei.

MVC

Zend nutzt Inversion of Control. Dazu ist es nötig, sich an Strukturen und Namenskonventionen zu halten.

module\Application\src\Application\Controller

module\Application\view\application

ToDo

Authentication

  • In das vendor-Verzeichnis wechseln
git clone https://github.com/ZF-Commons/ZfcUser.git
git clone https://github.com/ZF-Commons/ZfcBase.git
  • In ./config/application.config.php die Module aktivieren
<?php
return array(
    'modules' => array(
        'Application',
        'ZfcBase',  // <- also das
        'ZfcUser',  // und das
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);
?>