nach oben

Entwicklungs-Umgebung

Die Einrichtung einer Entwicklungsumgebung für CMSimple_XH ist recht einfach: Ein Webserver mit PHP-Unterstützung und die CMSimple_XH-Quellen sind bereits ausreichend. Natürlich wird auch ein passender Editor benötigt. Wenn die eigenen Entwürfe auch in die allgemeine Entwicklung von CMSimple_XH einfließen sollen, wird zusätzlich ein Git-Client benötigt.

Anforderungen

  • CMSimple_XH 1.7 und höher
  • PHP ≥ 5.6, inklusive Interactive PHP Debugger (phpdbg)
  • Webserver
  • Git-Client (unter Windows wird TortoiseGit empfohlen, alternativ GitHub Desktop)

Um das CMSimple_XH-Build-System verwenden zu können (empfohlen), werden außerdem die folgenden Komponenten benötigt:

Alle anderen Entwicklungsabhängigkeiten werden über Composer installiert.

Optional: Phan, das PHP 7.1 erfordert und die php-ast-Erweiterung.

Einrichten

  • installiere PHP und den Webserver
  • für PHP 5: installiere runkit, und füge runkit.internal_override = 1 zur php.ini hinzu;
    für PHP 7: installiere uopz
  • für XH 1.6: installiere phpDocumentor 1;
    für XH 1.7: installiere Doxygen
  • installiere Node.js
  • installiere JSDoc 3
  • installiere Composer
  • klone das CMSimple_XH-Repo von Github
  • composer install im Stammverzeichnis des geklonten Repos ausführen
  • füge vendor/bin zu PATH hinzu (in Windows: ".\vendor\bin")

Phing Targets

Das CMSimple_XH-Build-System wird von Phing unterstützt und bietet mehrere Targets, die im Folgenden beschrieben werden. Eine kurze Hilfe zu den verfügbaren Targets erhält man, indem phing ohne Parameter ausgeführt wird.

In einer neueren Version von Phing hat sich der Standard-Logger zu phing.listener.AnsiColorLogger geändert, was zu seltsamen Ausgaben auf Terminals führt, die keine ANSI-Escape-Codes verarbeiten können. Du musst in diesem Fall explizit phing.listener.DefaultLogger verwenden, oder unter Windows kannst du Ansicon als Ersatz für cmd.exe verwenden.

Statische Code-Analyse

phing sniff

Überprüft den Core und die internen Plugins (filebrowser, meta_tags und page_params) auf Verstöße gegen den Kodierungsstandard.

phing mess

Prüft auf unbenutzten Code. Nur im Master verfügbar, aber nicht in Release-Zweigen vor 1.6.

phing compat

Überprüft den Core und die Standard-Plugins auf Kompatibilität mit verschiedenen PHP-Versionen.

phing phan

Führt eine allgemeine, statische Code-Analyse durch. Für dieses Ziel muss der Befehl phan im Pfad vorhanden sein.

Test Suites

phing unit-tests

Führt die Unit-Testsuite aus. Derzeit erfordert dies eine „korrekte“ Konfiguration, insbesondere muss language_default auf 'en' gesetzt sein.

phing attack-tests

Führt die Angriffs-Testsuite aus. Dazu muss die Umgebungsvariable CMSIMPLEDIR auf den URL-Pfad der Entwicklungsinstallation gesetzt werden. Wenn die URL beispielsweise http://localhost/xh/ lautet, muss CMSIMPLEDIR auf /xh/ gesetzt werden (beachte die führenden und nachgestellten Schrägstriche).

phing validation-tests

Führt die Validierungs-Testsuite aus. CMSIMPLEDIR muss entsprechend eingestellt werden (siehe oben). Beachte, dass diese Testsuite den W3C-Validator verwendet, sodass die Tests manchmal fehlschlagen können, weil dieser Dienst nicht verfügbar ist.

phing all-tests

Kurzbefehl für die Ausführung aller drei Testsuiten.

Code-Überprüfung

phing coverage

Erzeugt einen Testbericht über die Code-Überprüfung auf der Grundlage der Unit-Test-Suite. Der Bericht befindet sich in tests/unit/coverage/.

Dokumentation

phing php-doc

Erzeugt die PHP-Dokumentation aus den Quellen und den Tutorials in tutorials/. Die Dokumentation befindet sich dann in doc/php/.

phing js-doc

Erzeugt die JS-Dokumentation aus den Quellen. Sie befindet sich in doc/js/.

phing doc

Ein Kurzbefehl, um die PHP- und JS-Dokumentation zu erstellen.

Building

phing -Dversion=<version> build

Erzeugt das vollständige Installationspaket als ZIP-Archiv im Stammverzeichnis, bereit für die Veröffentlichung.

phing -Dversion=<version> -Dpatchee=<filename> build-patch

Erzeugt ein Update-Paket als ZIP-Archiv im Stammordner, bereit zur Veröffentlichung. <Dateiname> sollte der Dateiname des vollständigen Installationspakets der Version sein, für die der Patch gebaut werden soll.

Wenn also zum Beispiel CMSimple_XH 1.7.6 veröffentlicht werden soll, führen wir Folgendes aus:

phing -Dversion="1.7.6" build
phing -Dversion="1.7.6" -Dpatchee="CMSimple_XH-1.7.zip" build-patch
mv "CMSimple_XH-1.7.6-patch.zip" "CMSimple_XH-update-1.7-to-1.7.6.zip"
phing -Dversion="1.7.6" -Dpatchee="CMSimple_XH-1.7.5.zip" build-patch
mv "CMSimple_XH-1.7.6-patch.zip" "CMSimple_XH-update-1.7.5-to-1.7.6.zip"
Die erzeugten ZIP-Archive eignen sich möglicherweise nicht zur Weitergabe, da das Entpacken zu laxe Dateisystemberechtigungen zur Folge haben könnte. Daher muss das ZIP-Archiv möglicherweise mit einem geeigneten Tool neu gezippt werden.

Fehlersuche

Wenn du Probleme hast, die Entwicklungsumgebung einzurichten oder die Phing-Targets auszuführen, kannst du dich an andere Entwickler im Open Development Bereich des CMSimple_XH Forums wenden. Wirf insbesondere einen Blick auf den Thread „How I ride the bullet - How I set up a testing environment?“

Filebrowser

Plugin zur Verwaltung von Benutzer-Dateien. Der Filebrowser ist der Standard-Dateimanager von CMSimple_XH.

PHP

PHP = Hypertext Preprocessor, ursprünglich Personal Home Page Tools

PHP ist eine Skriptsprache, die häufig zur Erstellung dynamischer Websites verwendet wird.