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 18 Setup
Pfeil 18.1 Architektur
Pfeil 18.1.1 DatabaseSchema
Pfeil 18.1.2 Die ConsoleTools-Komponente
Pfeil 18.1.3 Eingaben
Pfeil 18.1.4 Tabellen
Pfeil 18.1.5 Dialoge
Pfeil 18.1.6 Fortschritt
Pfeil 18.2 Praxis im Blog
Pfeil 18.2.1 Das aktuelle Schema auslesen
Pfeil 18.2.2 Ein Setup-Programm
Pfeil 18.3 Erweiterte Möglichkeiten
Pfeil 18.3.1 Beziehungen zwischen Optionen
Pfeil 18.3.2 Optionsaliase
Pfeil 18.4 Fazit


Galileo Computing - Zum Seitenanfang

18.3 Erweiterte Möglichkeiten Zur nächsten ÜberschriftZur vorigen Überschrift

Trotz der hier gezeigten Fülle an Features bieten die beiden Komponenten noch mehr. Bei der Komponente DatabaseSchema haben wir bisher absichtlich darauf verzichtet, die Backend-Handler zu betrachten. Wir wollen dies nun im Rahmen der Erweiterbarkeit der Komponente tun.

Auch im Bereich der Komponente ConsoleTools gibt es einige weitere Features zu entdecken, die im GP-Blog keine Verwendung fanden und auch im theoretischen Teil in Abschnitt 18.1, »Architektur«, nicht vorgestellt wurden. Darunter fallen die Konfiguration von Beziehungen zwischen den Optionen und das Anlegen eines Alias.


Galileo Computing - Zum Seitenanfang

18.3.1 Beziehungen zwischen Optionen Zur nächsten ÜberschriftZur vorigen Überschrift

Zur Verwendung von Optionen mit der ezcConsoleInput-Klasse der ConsoleTools-Komponente haben Sie bereits Beispiele gesehen. Unberücksichtigt blieb dabei aber die Fähigkeit, Beziehungen zwischen den Optionen und in Bezug auf die Verwendung von Argumenten abzubilden.

Zu diesem Zweck stellen Instanzen von ezcConsoleOption Methoden bereit, die es Ihnen erlauben, Optionen untereinander auszuschließen oder Beziehungen zu beschreiben. Als Beispiel sei angenommen, dass Sie Ihren Benutzern zwei Methoden zur Verfügung stellen, die Optionen einer Datenbankverbindung anzugeben. Zum einen soll es möglich sein, den kompletten DSN mittels der Angaben -d oder --dsn anzugeben und zum anderen soll eine fiktive Konfigurationsdatei Informationen zu verschiedenen Datenbanken bereitstellen. Neben der Angabe dieser Datei über -c oder --config muss zusätzlich die Eingabe des Datenbanknamens über -n oder --name erfolgen.

Dabei schließen sich beide Varianten aus. Die zweite Variante erfordert, dass beide Parameter angegeben werden.

Diesen Anwendungsfall könnten Sie so abbilden:

$input = new ezcConsoleInput();
$helpOption = $input->registerOption(
    new ezcConsoleOption( 'h', 'help' )
);
$dsnOption = $input->registerOption(
    new ezcConsoleOption(
        'd',
        'dsn',
        ezcConsoleInput::TYPE_STRING
    )
);
$configOption = $input->registerOption(
    new ezcConsoleOption(
        'c',
        'config',
        ezcConsoleInput::TYPE_STRING
    )
);
$nameOption = $input->registerOption( ;
    new ezcConsoleOption(
        'n',
        'name',
        ezcConsoleInput::TYPE_STRING
    )
);
$configOption->addDependency(
    new ezcConsoleOptionRule( $nameOption )
);
$nameOption->addDependency(
    new ezcConsoleOptionRule( $configOption )
);
$dsnOption->addExclusion(
    new ezcConsoleOptionRule( $configOption )
);
$dsnOption->addExclusion(
    new ezcConsoleOptionRule( $nameOption )
);
$configOption->addExclusion(
    new ezcConsoleOptionRule( $dsnOption )
);
$nameOption->addExclusion(
    new ezcConsoleOptionRule( $dsnOption )
);

Listing 18.17 Beziehungen zwischen Optionen konfigurieren

In diesem Beispiel wurden die soeben beschriebene Parameterkonstellation sowie eine weitere Option konfiguriert: Die Hilfeoption, die von den anderen Optionen völlig unabhängig ist.

Die hervorgehobenen Zeilen im Listing definieren in den Optionen-Objekten, wie diese zueinander in Beziehung stehen. Während die Optionen für die Konfiguration und den Namen der Datenbank einander benötigen, schließen beide die Übergabe der DSN-Option aus. Übergibt nun ein Anwender eine nicht erlaubte Kombination wie beispielsweise --dsn und -c an das Programm, wirft die process()-Methode des ezcConsoleInput-Objekts eine entsprechende Ausnahme: Zum Beispiel vom Typ ezcConsoleOptionDependencyViolationException, da die -c-Option ohne passendes -n angegeben wurde.

Die Verwendung von ezcConsoleOptionRule-Objekten an dieser Stelle ist überflüssig. Sie eröffnen Ihnen jedoch weitere Möglichkeiten, indem sie Beziehung auf bestimmte Werte von Parametern ermöglichen.


Galileo Computing - Zum Seitenanfang

18.3.2 Optionsaliase topZur vorigen Überschrift

In einigen Fällen kann es sinnvoll sein, dass Sie Optionen mit gleicher Bedeutung unter verschiedenen Namen bereitstellen. Ein Grund kann sein, dass eine Option in zwei Programmen unterschiedlich heißt und Sie es beiden Benutzergruppen erlauben wollen, sich »heimisch« zu fühlen. Ein anderer Grund könnte sein, dass Sie eine neue Ordnung für Ihre Optionen vorgesehen haben, Benutzer alter Varianten aber zunächst bei einem Update nicht »verärgern« wollen und daher vorerst die alten Optionen beibehalten. In beiden Fällen bieten Aliase, also Pseudooptionen, die lediglich auf eine echte Option verweisen, die Lösung.

Objekte vom Typ ezcConsoleInput stellen Ihnen zur Erzeugung eines Alias die Methode registerAlias() zur Verfügung. Diese erwartet zunächst den Kurz- und dann den Langnamen des neuen Alias sowie als dritten Parameter das Optionen-Objekt, auf das das Alias zeigt. Ein so erzeugtes Alias reagiert genauso wie sein Referenzparameter und füllt auch dessen Wertattribut entsprechend. Sie müssen sich also um das Alias selbst keine Sorgen machen und nur mit den eigentlichen Optionen arbeiten.

Analog zu der Deregistrierung echter Optionen, die vorher in diesem Kapitel gezeigt wurde, gibt es auch für Aliase eine Methode, um diese aufzuheben: unregisterAlias() erwartet als Parameter den Kurz- und Langnamen des zu zerstörenden Alias. Nach dem Aufruf kann das Alias vom Benutzer nicht mehr verwendet werden und taucht auch nicht mehr in der Hilfe auf.

Achten Sie aber darauf, nicht versehentlich ein Alias mit Hilfe der Methode unregisterOption() entfernen zu wollen oder umgekehrt eine Option mit der analogen Methode für Aliase. In beiden Fällen wird die ezcConsoleInput-Instanz mit einer Ausnahme reagieren.



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