Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Exponential für PHP-Entwickler

Was einem PHP-Entwickler in Exponential begegnet - eine große, ausgereifte PHP-Codebasis mit eigenen Konventionen, generierten Klassen-Maps, geschichteten INI-Einstellungen, persistenten Objekten und einer…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/php-developers/exponential-for-php-developers.md

On this page

This page is a translation. Read the English original

Exponential für PHP-Entwickler

Diese Seite richtet sich an PHP-Entwickler, die neu in der Codebasis von Exponential sind. Sie erklärt, welche Art von PHP-Anwendung Exponential ist, welchen Konventionen Sie in der ersten Stunde begegnen und wo sie sich von den Frameworks unterscheiden, die die meisten PHP-Entwickler heute kennen. Die ausführlichen Seiten dieses Abschnitts bauen darauf auf.

Inhalt

  1. Was die Codebasis ist
  2. Fünf Dinge, die PHP-Entwickler überraschen
  3. Die Bausteine, die Sie schreiben werden
  4. Was das Projekt bei jeder Änderung prüft
  5. Wie es weitergeht

Was die Codebasis ist

Exponential ist ein quelloffenes Content-Management-System und PHP-Anwendungs-Framework, lizenziert unter der GNU GPL, Version 2 oder später (composer.json, "license": "GPL-2.0-or-later"). Die Codebasis wird seit 1999 entwickelt, zuerst unter dem Namen eZ Publish, einem Produkt, das sein Hersteller nach fast 18 Jahren eingestellt hat; 7x hat es am Leben erhalten, und das Produkt heißt seit August 2025 Exponential (Wer ist 7x?).

Für einen PHP-Entwickler ist diese Geschichte in einer Hinsicht wichtig: Der Code ist älter als Composer, PSR-4 und Namespaces, und er hat seine eigenen Konventionen behalten. Sie sind konsistent und dokumentiert, und die Prüfungen des Projekts setzen sie bei neuem Code durch.

TeilVerzeichnisWas es enthält
Kernelkernel/Inhaltsmodell, Module und Views, Datentypen, Workflows, Benutzer und Rollen, der Anfrage-Kernel (kernel/private/classes/ezpkernelweb.php)
Bibliothekenlib/allgemeine Bausteine: lib/ezutils (eZINI, eZDebug, eZSys, eZHTTPTool, eZExecution), lib/ezdb (eZDB und die Treiber), lib/eztemplate (die Template-Engine), lib/ezfile, lib/ezi18n und mehr
Erweiterungenextension/alles, was darauf aufsetzt, mitgeliefert oder eigenes: Module, Datentypen, Operatoren, Designs, Einstellungen
Einstellungensettings/die INI-Standardwerte; Installationen überschreiben sie in settings/override/ und settings/siteaccess/
Einstiegspunkteindex.php, bin/php/*.php, runcronjobs.phpder Web-Front-Controller, die Kommandozeilenskripte und der Cronjob-Runner

Einen Rundgang durch jedes Verzeichnis finden Sie unter Ein Rundgang durch den Quellbaum.

Fünf Dinge, die PHP-Entwickler überraschen

  1. Klassen-Maps, nicht PSR-4. Klassen werden über generierte Arrays gefunden: autoload/ezp_kernel.php für den Kernel und var/autoload/ezp_extension.php für die Erweiterungen, geschrieben von php bin/php/ezpgenerateautoloads.php. Eine neue Klasse, die nicht in der Map steht, existiert nicht (Autoloads und Klassen-Maps).
  2. Der Kernel-Stil kennt keine Typdeklarationen. phpcs.xml.dist lehnt in neuem Code declare( strict_types=1 ), skalare Parametertypen, Rückgabetypen und Eigenschaftstypen ab, damit er zum vorhandenen Code passt und PHP 8.0 weiter funktioniert (Warum der Code keine Typdeklarationen hat).
  3. array( ... ), nicht [ ... ], und Leerzeichen innerhalb von Klammern. foo( $a, $b ), if ( $a ), die öffnende geschweifte Klammer einer Funktion in einer eigenen Zeile (Der Coding-Standard).
  4. Einstellungen sind INI-Dateien in Schichten. eZINI::instance( 'site.ini' )->variable( 'Block', 'Key' ) liest den Wert, nachdem die Kernel-Standardwerte, die Erweiterungen, der Siteaccess und die Überschreibungen der Installation zusammengeführt wurden (Einstellungen mit eZINI lesen).
  5. Viel Zustand ist statisch. Singletons wie eZINI::instance(), eZDB::instance() und In-Memory-Caches leben in statischen Eigenschaften. Unter PHP-FPM beginnt jede Anfrage frisch; unter den persistenten Workern von Velocity überleben sie zwischen Anfragen, sofern der Kernel sie nicht zurücksetzt (Fallen durch statischen Zustand).

Die Bausteine, die Sie schreiben werden

Sie möchtenSie schreibenSeite
einen neuen Bildschirm unter /<module>/<view>ein Modul mit ViewsSchreiben Sie Ihre erste Modul-View
ein Kommandozeilenwerkzeugeine Klasse, die Exponential\Runnable\Command erweitertEinen Konsolenbefehl schreiben
zeitlich geplante Arbeiteinen Cronjob-TeilEinen Cronjob-Teil schreiben
Daten für Templateseine Fetch-FunktionEine Fetch-Funktion schreiben
einen Template-Filter oder eine Hilfsfunktioneine Template-Operator-KlasseEinen Template-Operator in PHP schreiben
einen neuen Feldtypeine Klasse, die eZDataType erweitertEinen Datentyp schreiben
einen Schritt in einem Workfloweine Klasse, die eZWorkflowEventType erweitertEinen Workflow-Ereignistyp schreiben
Daten in einer eigenen Tabelleeine Klasse, die eZPersistentObject erweitertDefinitionen persistenter Objekte im Detail
JSON für Ihr eigenes JavaScripteine ezjscore-Serverfunktionezjscore-JSON-Endpunkte in PHP
eine Reaktion auf etwas, das der Kernel tuteinen Event-ListenerEreignisse, Listener und Filter

Was das Projekt bei jeder Änderung prüft

PrüfungWerkzeugSeite
PHP-Syntax, auch mit PHP 8.0php -l, make lint80Code schreiben, der unter PHP 8.0 läuft
Code-Stil geänderter Dateienmake phpcs (phpcs.xml.dist)Der Coding-Standard
Statische Analysemake phpstan (Level 1 mit einer Baseline)Statische Analyse mit PHPStan
Unit-Testsvendor/bin/phpunitPHPUnit ohne Datenbank
Das Datei-Manifestmake manifest-checkGit-Hooks und make-Ziele

Wie es weitergeht

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x