Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Vorwort
1 Einleitung
2 Einführung in eZ Components
3 Die Applikationsbasis
4 Fehlerbehandlung und Debugging
5 Konfiguration
6 Datenbankanbindung
7 ORM mit PersistentObject
8 Template
9 Übersetzung
10 Benutzereingaben validieren
11 Authentifizierung
12 Bildverarbeitung
13 Archive und Dateien
14 Mail
15 Logging
16 Diagramme
17 Feeds und Caching
18 Setup
A Inhalt der Buch-CD
Stichwort

Download:
- ZIP, ca. 2,7 MB
Ihre Meinung?

Spacer
<< zurück
eZ Components von Tobias Schlitt, Kore Nordmann
Das Entwickler-Handbuch
Buch: eZ Components

eZ Components
geb., mit CD
454 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1073-7
Pfeil 5 Konfiguration
Pfeil 5.1 Nutzen in der Applikation
Pfeil 5.2 Die Configuration-Komponente
Pfeil 5.3 Integration der Komponente
Pfeil 5.3.1 Basiseinstellungen
Pfeil 5.3.2 Komplexe Indizes
Pfeil 5.4 Direkter Zugriff
Pfeil 5.4.1 Änderungen speichern
Pfeil 5.4.2 Schnellerer Zugriff durch PHP-Arrays
Pfeil 5.4.3 Lazy-Initialization
Pfeil 5.5 Fazit


Galileo Computing - Zum Seitenanfang

5.3 Integration der Komponente Zur nächsten ÜberschriftZur vorigen Überschrift

Die Configuration-Komponente wird im Konstruktor des Haupt-Controllers initialisiert, der zentralen Klasse des GP-Blogs, womit sichergestellt ist, dass die Einstellungen der Anwendung von da an der ganzen Applikation zur Verfügung stehen.

protected function __construct()
{
    $this->actionSignals = new ezcSignalCollection();
    $this->mainSignals   = new ezcSignalCollection();

    $cfg = ezcConfigurationManager::getInstance();
    $cfg->init(
        'ezcConfigurationIniReader',
        dirname( __FILE__ ) . '/../config/'
    );
}

Listing 5.1 Konfiguration initialisieren

Auch die Klasse ezcConfigurationManager implementiert das Singleton-Entwurfsmuster, welches Ihnen schon öfter in diesem Buch begegnet ist (zum Beispiel in Abschnitt 2.3.4, »Lazy-Initialization«). Diese Implementierung des Singleton-Patterns stellt sicher, dass nur eine Instanz des Konfigurationsmanagers existiert. Außerdem ist so der Zugriff auf Konfigurationswerte überall im GP-Blog automatisch gewährleistet.

Die erste Aktion besteht nun darin, die Singleton-Instanz von ezcConfigurationManager zu initialisieren. Dafür werden dieser die Art derjenigen Konfigurationsdateien übergeben, die gelesen werden sollen, sowie das Verzeichnis, in dem die Dateien zu finden sind. Die Übergabe des Klassennamens des zu benutzenden ezcConfigurationReaders stellt die leichte Erweiterbarkeit sicher, da Sie hier auch eigene Implementierungen dieser Basisklassen erstellen können. Das Verzeichnis mit den Konfigurationsdateien befindet sich im Hauptverzeichnis der Applikation, sodass es relativ zum Pfad der Controller-Klassendatei referenziert wird. Aus diesem Verzeichnis werden von nun an beim Zugriff auf alle Einstellungen die Konfigurationsdateien gelesen.


Galileo Computing - Zum Seitenanfang

5.3.1 Basiseinstellungen Zur nächsten ÜberschriftZur vorigen Überschrift

In einer zentralen Konfigurationsdatei liegen die Einstellungen der Applikation. Dazu gehören der Name des Autors, der Titel des Blogs und benötigte Einstellungen der Url-Komponente aus Kapitel 3, »Die Applikationsbasis«, sowie die Datenbankverbindungsdaten, die später in Kapitel 6, »Datenbankanbindung«, verwendet werden.

# General site settings
[general]
name=John Doe
title=Some random thoughts

# Installation specific settings
[installation]
# Host running the blog. Leave empty for auto detection.
# host=galileo

# Path to blog
basedir=/

# Scriptname of blog index file
script=index.php

# Database Source Name
# extension://user:password@host/database
dsn=mysql://user:passwort@localhost/gpblog

Listing 5.2 Konfigurationsdatei site.ini

Die Konfigurationsdatei besteht aus drei Sektionen, in die die Einstellungen einsortiert wurden. Sämtliche Einstellungen müssen in Sektionen gegliedert werden, deren Namen Leerzeichen, Buchstaben und Zahlen enthalten können. Die genaue Spezifikation der Grammatik von ini-Konfigurationsdateien finden Sie in der Dokumentation [http://ezcomponents.org/docs/api/latest/introduction_Configuration.html#ini-file-format ] als EBNF, sie orientiert sich aber an dem gewohnten Format – wie es beispielsweise in der Datei php.ini zu finden ist –, mit der zusätzlichen Eigenschaft, dass Kommentare neben ; auch mit # eingeleitet werden können. Konfigurationswerte dürfen auch Leerzeichen und Sonderzeichen enthalten, selbst wenn sie nicht in Anführungszeichen gefasst werden.

Die Einstellungen aus der gezeigten Datei site.ini werden in der Methode run() des Haupt-Controllers, der bereits aus Abschnitt 3.3, »Der Haupt-Controller«, bekannt ist, wie folgt verwendet:

$urlConfig->basedir = ezcConfigurationManager::getInstance()
    ->getSetting( 'site', 'installation', 'basedir' );
$urlConfig->script  = ezcConfigurationManager::getInstance()
    ->getSetting( 'site', 'installation', 'script' );
if ( ezcConfigurationManager::getInstance()->               
    hasSetting( 'site', 'installation', 'host' ) )
{
    $host = ezcConfigurationManager::getInstance()->        
        getSetting( 'site', 'installation', 'host' );
}
else
{
    $host = $_SERVER['SERVER_NAME'];
}

Listing 5.3 Konfigurationswerte auslesen

Die Url-Komponente parst die URL, mit der das GP-Blog aufgerufen worden ist. Um das Applikations-Setup flexibel zu gestalten, wird die Url-Komponente mit dem Ordner, in dem die Applikation liegt, und dem Namen der Basisdatei konfiguriert. Bislang kamen diese Informationen aus PHP-Konstanten in der Datei index.php, doch sollten auch diese durch die Konfigurationskomponente ersetzt werden.

In den ersten beiden Zeilen des Beispiels wird jeweils ein Konfigurationswert ausgelesen und der Url-Komponente übergeben. Dazu wird die Methode getSetting() auf dem Konfigurationsmanager aufgerufen, welchem drei Parameter übergeben werden: Der erste Parameter spezifiziert die Konfigurationsdatei, in der die Einstellung zu finden ist, der zweite und dritte die Sektion und den eigentlichen Schlüssel des gewünschten Werts.

Der Dateiname wird beim Lesen von Konfigurationseinstellungen mit angegeben, weil der Konfigurationsmanager zahlreiche Konfigurationsdateien verarbeiten kann und so die Einstellungen in verschiedene Dateien ausgelagert werden können. Diese Option sorgt sowohl für eine logische Trennung der Einstellungen in der Applikation als auch für einen einfacheren, da strukturierteren, Zugriff durch den Anwender. Außerdem kümmert sich der entsprechender Reader um das Anhängen der passenden Dateiendung, sodass Sie völlig unabhängig vom verwendeten Konfigurationsformat entwickeln können.

Zuletzt wird die in der Konfigurationsdatei durch den Kommentar als optional deklarierte Einstellung host abgefragt. Abhängig davon, ob diese gesetzt ist, wird sie entweder verwendet oder es wird auf die super-globale Variable $_SERVER['SERVER_NAME'] zugegriffen.


Galileo Computing - Zum Seitenanfang

5.3.2 Komplexe Indizes topZur vorigen Überschrift

In Kapitel 3, »Die Applikationsbasis«, wurde die Liste der Action-Controller, welche ihre Dispatching-Regeln in der SignalSlot-Komponente registrieren, über eine eigene Autoload-Datei definiert. Um die Liste dieser Klassen in Zukunft einfacher erweitern zu können, wird sie ebenfalls in eine eigene Konfigurationsdatei ausgelagert.

# Classes containing actions to register for dispatcher
[classes]
action[]=gpBlogActionEntryDisplay
action[]=gpBlogActionEntryEdit
action[]=gpBlogActionError

# Default action
[default]
action=list_entries

Listing 5.4 Konfigurationsdatei actions.ini

Neben der gewohnten Schreibweise von Konfigurationsschlüsseln in der letzten Zeile zeigen die vorhergehenden Zeilen eine Besonderheit: Hinter dem Namen der Schlüssel sind eckige Klammern angehängt, um einem Konfigurationsschlüssel eine Liste von Werten zuzuweisen. Intuitiv erinnert dies an die PHP-Array-Semantik. Und tatsächlich wird diese Liste in der Applikation durch ein Array repräsentiert.

Die Configuration-Komponente unterstützt nicht nur numerische, sondern auch Zeichenketten-Indizes, sowie multidimensionale Arrays, indem – wie in PHP – mehrere eckige Klammern verwendet werden. So lässt sich ein Schlüssel wie user[kore][email][] verwenden um einem Benutzer über eine Konfigurationsdatei mehrere E-Mail-Adressen zuzuordnen. In der Applikation lassen sich diese (genau wie die Skalare im letzten Beispiel) über getSetting() auslesen.

foreach( ezcConfigurationManager::getInstance()->
    getSetting( 'actions', 'classes', 'action' ) as
    $actionClass )
{
    call_user_func(
        array( $actionClass, "registerSlots" ),
        $this->mainSignals,
        $this->actionSignals
    );
}

Listing 5.5 Initialisierung der Aktionen aus der Konfigurationsdatei

In diesem Beispiel wird der Schlüssel action der Sektion classes aus der Konfigurationsdatei actions gelesen und direkt in der foreach-Schleife verwendet, um die Signale der Action-Controller zu registrieren.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: PHP 5.3 und MySQL 5.1






 PHP 5.3 und
 MySQL 5.1


Zum Katalog: Besser PHP programmieren






 Besser PHP
 programmieren


Zum Katalog: Webshops mit Magento






 Webshops mit
 Magento


Zum Katalog: Sichere Webanwendungen






 Sichere
 Webanwendungen


Zum Katalog: PHP 5.3 und MySQL 5.1 - Videotraining






 PHP 5.3 und
 MySQL 5.1 -
 Videotraining


Zum Katalog: Apache 2






 Apache 2


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-
 Optimierung
 für Webentwickler


Zum Katalog: Joomla! 1.5






 Joomla! 1.5


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de