Einen PHP-Entwicklungs-Checkout einrichten
Diese Seite richtet sich an PHP-Entwickler, die einen Checkout von Exponential möchten, um darin PHP-Code zu schreiben und zu testen: Kernel-Korrekturen, Erweiterungen, Tests. Sie geht einen Schritt weiter als die Einrichtungsseite für Anwendungsentwickler (Eine Entwicklungsumgebung einrichten): die Entwicklungswerkzeuge, die Git-Hooks und eine PHP-8.0-Binärdatei für Kompatibilitätsprüfungen.
Inhalt
- Was Sie brauchen
- Klonen und installieren
- Die Umgebung benennen
- Die Entwicklungswerkzeuge
- Die Git-Hooks
- Eine PHP-8.0-Binärdatei
- Debug-Einstellungen für die Entwicklung
- Tägliche Befehle
Was Sie brauchen
| Werkzeug | Warum |
|---|---|
| PHP 8.0 oder neuer auf der Kommandozeile | der Kernel unterstützt 8.0 bis 8.5; PHPUnit 13 im installierten vendor/ braucht 8.4 |
| Composer 2 | die Abhängigkeiten und die Entwicklungswerkzeuge |
| Git | die Hooks und die änderungsbasierten Prüfungen vergleichen mit origin/main |
| Node.js (optional) | node --check für geändertes JavaScript im pre-commit-Hook |
| Ein zweites PHP, 8.0 (optional) | make lint80, die älteste unterstützte Syntax |
Klonen und installieren
git clone https://github.com/se7enxweb/exponential.git exp-dev
cd exp-dev
composer install
php bin/php/console exp:install --apply --package=sevenx_multisite_clean --url=http://127.0.0.1:8088composer install führt danach bin/php/ezpgenerateautoloads.php aus ("post-install-cmd" in composer.json).
Die Installation verwendet SQLite, sofern Sie nicht --db= angeben (Die Konsoleninstallation).
Installieren Sie mit --force neu, wenn Sie einen sauberen Zustand brauchen.
Die Umgebung benennen
Kopieren Sie config.env.php.example nach config.env.php und setzen Sie den Umgebungsnamen dieser Maschine:
define( 'EXP_ENV', 'dev' );Mit dev (oder test) zeigt index.php PHP-Fehler im Browser, und eZINI liest zusätzlich eine Variante jeder
Einstellungsdatei mit dem Namen nach .ini, zum Beispiel settings/override/site.ini.dev.append.php, nach der
Standarddatei derselben Schicht. Jede Umgebung hat ihren eigenen INI-Cache. config.env.php steht in .gitignore;
committen Sie sie niemals.
Die Entwicklungswerkzeuge
make devtools # PHP_CodeSniffer, PHPCompatibility and PHPStan into .devtools/ (composer.dev.json), never into vendor/Die Werkzeuge werden aus composer.dev.json für PHP 8.0.30 aufgelöst, sodass sie unter jedem unterstützten PHP laufen.
Danach existieren .devtools/vendor/bin/phpcs und .devtools/vendor/bin/phpstan, und die make-Ziele verwenden sie
(Git-Hooks und make-Ziele).
Die Git-Hooks
make hooks # git config core.hooksPath .githooks| Hook | Prüft |
|---|---|
| pre-commit | php -l der vorgemerkten PHP-Dateien, PHP-8.0-Syntax, wenn eine PHP-8.0-Binärdatei gefunden wird, node --check des vorgemerkten JavaScript, das Datei-Manifest, den Code-Stil der vorgemerkten PHP-Dateien |
| commit-msg | der Betreff beginnt mit Added: , Updated: , Fixed: , Removed: oder Renamed: |
| pre-push | PHPStan gegen die Baseline |
Ohne make devtools prüfen die Hooks weiterhin Syntax, Manifest und Nachricht und überspringen Code-Stil und PHPStan
mit einem Hinweis.
Eine PHP-8.0-Binärdatei
PHP 8.0 ist die älteste unterstützte Version (das mitgelieferte PHP von RHEL 9); PHP 7.4 ist ohne Support nutzbar (make lint74 prüft sie). Der pre-commit-Hook und make lint80 finden PHP 8.0 als EXP_PHP80, php8.0
oder php80 im PATH oder als /opt/plesk/php/8.0/bin/php:
make lint80 # PHP 8.0 syntax of the files changed since origin/main
make lint80-all PHP80=/path/to/php8.0 # every PHP file in git, as CI runs itOhne eine solche Binärdatei ist der CI-Job php80 Ihre einzige PHP-8.0-Prüfung (Code schreiben, der unter PHP 8.0 läuft).
Debug-Einstellungen für die Entwicklung
Nur in settings/override/site.ini.append.php der Entwicklungsmaschine:
[DebugSettings]
DebugOutput=enabled
[TemplateSettings]
DevelopmentMode=enabled
ShowTemplatePathComments=enabledDie Debug-Leiste zeigt dann für jede Seite Abfragen, Templates, Zeitmessungen und Einstellungen
(Die Debug-Leiste für PHP-Entwickler). Schreiben Sie diese Zeilen stattdessen in
eine site.ini.dev.append.php, dann können sie niemals eine Maschine erreichen, deren Umgebung nicht dev ist.
Tägliche Befehle
| Befehl | Wann |
|---|---|
php -l <file.php> | nach jeder Bearbeitung |
php bin/php/ezpgenerateautoloads.php -e | nach dem Hinzufügen, Umbenennen oder Verschieben einer Erweiterungsklasse |
php bin/php/ezcache.php --clear-tag=ini | nach einer Änderung der Einstellungen |
php bin/php/ezcache.php --clear-all | nach einer Änderung einer Klasse oder eines Template-Pfads, wenn die Ausgabe veraltet aussieht |
vendor/bin/phpunit <test file> | die Tests dessen, was Sie geändert haben |
make check | Syntax, Manifest, Code-Stil und PHPStan, bevor Sie pushen |
php bin/php/console exp:velocity deploy | unter Velocity: Autoloads, Caches, Worker, in der richtigen Reihenfolge |
Fügen Sie --allow-root-user den Cache- und Konsolenbefehlen nur hinzu, wenn Sie als root arbeiten.
Verwandte Seiten
- Mit Git entwickeln
- Eine Entwicklungsinstallation einrichten
- Umgebungseinstellungen
- 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.