Lektion 1.4: Ein Skript mit geladenem Kernel
Am schnellsten lernt man die Klassen des Kernels kennen, indem man sie aufruft. bin/php/ezexec.php lädt den Kernel
(Einstellungen, Datenbank, Autoloads) und führt dann eine beliebige PHP-Datei aus. In dieser Lektion legen die
Teilnehmenden den Erweiterungsordner an, den sie für den Rest des Kurses verwenden, und schreiben ein Skript, das eine
Einstellung und einen Knoten liest.
Auf einen Blick
| Kurs | Entwickler |
| Modul | Modul 1: Die Entwicklungsinstallation |
| Dauer | 45 Minuten (10 Präsentation, 35 Übung) |
| Niveau | Einsteiger |
| Zielgruppe | PHP-Entwickler, die neu bei Exponential sind |
| Voraussetzungen | Lektion 1.3; ein Texteditor |
Lernziele
Nach dieser Lektion können die Teilnehmenden:
- einen Erweiterungsordner
extension/mysite_helloanlegen und unter Git stellen; - ein Skript schreiben, das
eZINI,eZCLIundeZContentObjectTreeNodeverwendet; - eine PHP-Datei mit
php -lprüfen, bevor sie ausgeführt wird; - ein Skript mit
php bin/php/ezexec.php <file>ausführen und seine Ausgabe lesen.
Hinweise für Trainer
So präsentieren Sie es
Quelle: Ihre erste Stunde als Entwickler, Übung 6.
- Die Kurserweiterung (3 Minuten). Alle Teilnehmenden bauen im Laufe des Kurses eine Erweiterung,
mysite_hello. Sie ist noch nicht aktiv; Modul 7 schaltet sie ein. Ein Skript, das mitezexec.phpläuft, braucht keine Aktivierung. - Drei Klassen (4 Minuten).
eZINI::instance( 'site.ini' )liest Einstellungen mit allen angewendeten Overrides;eZCLI::instance()schreibt ins Terminal;eZContentObjectTreeNode::fetch( $nodeID )lädt einen Knoten (einen Platz im Inhaltsbaum). - Zuerst prüfen (1 Minute).
php -list die Kompilierprüfung vor allem anderen. - Ausführen (2 Minuten).
php bin/php/ezexec.php extension/mysite_hello/scripts/hello.php.
Häufige Fragen
Was ist der Unterschied zwischen einem Knoten und einem Objekt? Ein Objekt ist der Inhalt (mit Versionen und Übersetzungen); ein Knoten ist einer seiner Plätze im Baum. Die meisten Templates und Fetches arbeiten mit Knoten. Modul 4 geht tiefer darauf ein.
Darf ein so ausgeführtes Skript Inhalte ändern? Es läuft mit den vollen Rechten des Kernels. In diesem Kurs lesen Skripte bis Modul 9 nur.
Wie übergebe ich dem Skript Optionen? Skripte, die Optionen brauchen, werden als Konsolenbefehle geschrieben; Lektion 9.2 zeigt, wie.
Stolperfallen
- Eine Datei außerhalb der Installation. Legen Sie Skripte in der Erweiterung ab; Pfade in den Beispielen sind relativ zum Wurzelverzeichnis der Installation.
- Als root ausführen. Fügen Sie nichts hinzu: Arbeiten Sie als eigener Benutzer. Als root halten Skripte mit einer
Warnung an, solange
--allow-root-usernicht angegeben ist. - Knoten 2 ist nicht immer die Startseite. Im Schulungspaket ist Knoten 2 die Spitze des Inhaltsbaums. Die Teilnehmenden können die ID in der Administration prüfen.
Praktische Übung
Auf der Entwicklungsinstallation, aus ihrem Wurzelverzeichnis.
Legen Sie den Erweiterungsordner und sein Git-Repository an:
mkdir -p extension/mysite_hello/scripts git -C extension/mysite_hello initLegen Sie
extension/mysite_hello/scripts/hello.phpmit diesem Inhalt an:// Run: php bin/php/ezexec.php extension/mysite_hello/scripts/hello.php $cli = eZCLI::instance(); $ini = eZINI::instance( 'site.ini' ); $cli->output( 'Site name: ' . $ini->variable( 'SiteSettings', 'SiteName' ) ); $cli->output( 'Active extensions: ' . count( $ini->variable( 'ExtensionSettings', 'ActiveExtensions' ) ) ); $node = eZContentObjectTreeNode::fetch( 2 ); if ( $node instanceof eZContentObjectTreeNode ) { $cli->output( 'Node 2: ' . $node->attribute( 'name' ) . ' (class ' . $node->attribute( 'class_identifier' ) . ')' ); $cli->output( 'Children: ' . $node->subTreeCount( array( 'Depth' => 1 ) ) ); } else { $cli->error( 'Node 2 was not found' ); }Prüfen Sie die Syntax:
php -l extension/mysite_hello/scripts/hello.php.Führen Sie es aus:
php bin/php/ezexec.php extension/mysite_hello/scripts/hello.php.Vergleichen Sie den Namen der Website mit
php bin/php/console exp:ini get site.ini/SiteSettings/SiteName.Ändern Sie das Skript so, dass es die Knoten-ID eines Artikels holt, den Sie in der Administration sehen, und führen Sie es erneut aus.
Fügen Sie am Ende die Zeile
eZDebug::writeError( 'Test error from hello.php', 'mysite_hello' );hinzu, führen Sie das Skript aus und suchen Sie die Zeile invar/log/error.log.Entfernen Sie die Zeile aus Schritt 7 wieder.
Committen Sie das Skript im eigenen Repository der Erweiterung:
git -C extension/mysite_hello add scripts/hello.php git -C extension/mysite_hello commit -m "Added: First script that reads settings and a node"
Erwartetes Ergebnis
- Schritt 3 gibt
No syntax errors detectedaus. - Schritt 4 gibt den Namen der Website, die Zahl der aktiven Erweiterungen, Namen und Klasse von Knoten 2 und die Zahl seiner Kinder aus.
- Schritt 7:
var/log/error.logendet mit einer Zeile, dieTest error from hello.phpund die Kennzeichnungmysite_helloenthält. - Schritt 9:
git -C extension/mysite_hello log --onelinezeigt einen Commit. - Der Trainer prüft die Ausgabe von Schritt 4 auf den Bildschirmen von zwei Teilnehmenden.
Quiz
- Was tut
bin/php/ezexec.php, bevor es Ihre Datei ausführt? - Welche Klasse liest Einstellungen mit allen angewendeten Overrides?
A.
eZCLIB.eZINIC.eZDBD.eZScript - Was ist der Unterschied zwischen einem Inhaltsobjekt und einem Knoten?
- Welcher Befehl prüft die Syntax einer PHP-Datei, ohne sie auszuführen?
- Warum liegt die Kurserweiterung in einem eigenen Git-Repository und nicht in dem des Kernels?
Antworten
- Es lädt den Kernel: Einstellungen, Datenbankverbindung und Autoloads.
- B.
eZINI::instance( 'site.ini' ). - Das Objekt ist der Inhalt mit seinen Versionen und Übersetzungen; ein Knoten ist einer seiner Plätze im Inhaltsbaum.
php -l <file>.- Erweiterungen sind eigene Repositories; der Kernel wird über Composer und Git aktualisiert, und Ihre Arbeit wird in Ihrer eigenen Erweiterung committet (Eine Entwicklungsinstallation einrichten).
Weiterführende Literatur
- Ihre erste Stunde als Entwickler: sechs kurze Übungen zu Einstellungen, Templates, Debug-Ausgabe und Skripten.
- Die Werkzeuge, die Sie brauchen: PHP, Composer, Git, ein Editor und die Entwicklerwerkzeuge des Browsers.
Verwandte Seiten
- Modul 1: Die Entwicklungsinstallation
- Entwickler: Kursüberblick
- Trainer: hier beginnen
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.