Erste Schritte

Die Ignition-Klasse sorgt zusammen mit den einzelnen Units und den Steuerdateien assembly.ini und system.ini für eine geeignete Startumgebung für die Anwendung. So werden Komponenten geladen, Umgebungsvariablen gesetzt und Einstellungen zur Fehlerdarstellung gemacht.

Außerdem fängt Ignition Exeptions ab und informiert den Benutzer über grundlegende Fehler.

Nach dem erfolgreichen Download des Dispatcher-Phar erstellt man in dem gleichen Verzeichnis eine Startdatei mit dem Namen run.php mit folgendem Inhalt an:

try {
    /**
     * Wrapper-Funktion um den Namespace sauber zu halten.
     */
    \call_user_func(function() {

        /** 
         * Das Dispatcher-Phar liegt im gleichen Verzeichnis, alternativ
         * muss der Pfad hier angepasst werden.
         */
        $vendorDispatcherPath=__DIR__.\DIRECTORY_SEPARATOR.'alvine.dispatcher.phar';

        /** 
         * Name des Konfigurationsverzeichnisses 
         * Die Konfiguration wird in diesem Fall 
         * unter /etc/my-application gesucht. Alternativ 
         * kann die Umgebungsvariable MY_APPLICATION_CONFIG
         * gesetzt werden.
         */
        $configName = 'my-application';

        if(\file_exists($vendorDispatcherPath)) {
            include 'phar://'.$vendorDispatcherPath.'/source/Ignition.class.php';
        }

        /** Ignition kann nicht gestartet werdebn */
        if(!\class_exists('\Alvine\Dispatcher\Ignition')) {
            echo "Fatal Error.\n";
            exit(255);
            return false;
        }

        try {
            \Alvine\Dispatcher\Ignition::getInstance()
                ->initIniFiles($configName)
                ->runUnits();
        } catch(\Exception $e) {
            \Alvine\Dispatcher\Ignition::getInstance()->handleException($e);
        }
    });

    /**
     * Der integrierten PHP-Webserver erwartet false, in dem Fall, das
     * er eine statische Resource ausliefern soll. Im Standardfall wird return null
     * zurückgegeben.
     */
    return \Alvine\Dispatcher\Ignition::getInstance()->handleExit();
} catch(\Exception $e) {
    echo "Failure\n";
    exit(255);
    return false;
}

Im Anschluß muss das Konfigurationsverzeichnis - in diesem Beispiel /etc/new-application angelegt werden. Alternativ kann auch ein anderes Verzeichnis gewählt werden. Dann muss der Pfad auf dieses Verzeichnis explizit in der Umgebungsvariable MY_APPLICATION_CONFIG gesetzt werden.

Der Name der Umgebungsvariable leitet sich aus dem Projektnamen ab. Dabei werden alle Bindestriche - druch einen Unterstrich _ ersetzt, alle Buchstaben zu Grossbuchstaben und ein _CONFIG angehängt.

Das Fehlerlogging in diesme Stadium erfolgt je nach Verfügbarkeit in folgenden Verzeichnissen:

  • In der system.ini definiertes Verzeichnis
  • Verzeichnis aus der Umgebungsvariable _CONFIG_LOG
  • Homeverzeichnis des Benutzers
  • Systemverzeichnis über die Methode sys_get_temp_dir

Alternativ kann die Einrichtung auch über das Script initDispatcher.php erfolgen.

Usage: initDispatcher.php [options] 

   -p --project   Name des Projektes (Erlaubte Zeichen: a-zA-Z0-9-)
   -b --basepath  Basisverzeichnis für die Installation; default ist das aktuelle Verzeichnis)
   -c --component Zu ladende Alvine-Komponente (z.B. alvine.framework-snapshot.phar)    

Folgender Aufruf erstellt ein neues Projekt mit dem Namen my-application:

c6921f27-8948-4898-ad3a-0cddc2a41199

Die Verzeichnisstruktur sieht im Anschluß folgendermassen aus:

my-application
    ├── bin
    │   └── new-application.sh
    ├── etc
    │   └── new-application
    │       ├── cli
    │       ├── generally
    │       ├── http
    │       └── system.ini
    ├── log
    │   └── new-application
    ├── opt
    │   ├── new-application
    │   │   ├── default
    │   │   │   ├── assembly.ini
    │   │   │   └── assembly.properties
    │   │   ├── dispatcher
    │   │   │   ├── alvine.dispatcher-snapshot.phar
    │   │   │   ├── alvine.dispatcher-snapshot.phar.pubkey
    │   │   │   └── run.php
    │   │   └── source
    │   │       └── Command.class.php
    │   └── vendor
    │       └── alvine
    │           ├── alvine.application-snapshot.phar
    │           ├── alvine.application-snapshot.phar.pubkey
    │           ├── alvine.framework-snapshot.phar
    │           └── alvine.framework-snapshot.phar.pubkey
    ├── srv
    │   └── new-application
    ├── tmp
    │   └── new-application
    └── var
        └── new-application


Voila! Ignition ist eingerichtet.