Matti Mäkitalo: DOMDocument und PHP5

Beitrag lesen

Hi,

Soll heißen: Durch einen wie-auch-immer-Automatismus die einzelnen PHP-Dateien des Parser-Projektes in eine Datei "minifizieren", damit ich in meinem Projekt nur eine PHP-Datei "pflegen" und inkludieren muss.

Ich kann dir nur davon abraten. Minifizieren bringt im PHP-Umfeld eher weniger, da die Datei nicht an den Browser übertragen werden muss. Wenn du den Parsing-Aufwand des PHP-Parser reduzieren willst, nimm besser einen Cache wie APC oder OPCache (Standard seit PHP 5.5).

Ansonsten arbeitet die ganze Welt mit Composer. Die Gründe sind vielfältig: du beschreibst deine Abhängigkeiten deklarativ (statt imperativ den Code einfach in deinen Source-Tree reinzukopieren), es bietet einen Update-Mechanismus an, und es generiert dir einen Autoloader.

Kurz: es ist einfach der derzeitige Standard. Ich kann dir nur raten, dich damit auseinanderzusetzen.

Tausende Zeilen Code in eine PHP-Datei zu schreiben ist eher ein Zeichen von schlechtem Code.

Das mache ich nur, wenn ich externe libs verwende, die ich nicht selbst pflege, sondern die ich plug&play-artig in mein Projekt einbinden will. Was sollte daran verwerflich sein?

Damit zwingst du den Parser, immer die komplette Datei zu parsen. Würdest du einen Autoloader (z.B: den von composer) nutzen, dann würde der Parser immer nur die Dateien lesen, die auch tatsächlich gebraucht werden.

"Die Class" darf gerne so umfangreich wie notwendig sein. In meinem Projekt will ich sie auf übersichtliche Art einbinden können, ohne dass mir mein eigener Code in dem ganzen Fremdbibliotheken-Krams untergeht. Ein bisschen fürchte ich, früher oder später den Wald vor lauter Bäumen nicht mehr zu sehen.

Mach einfach folgendes:

1. Lade dir die composer.phar herunter (siehe Composer-Intro), am einfachsten erstmal in deinen Projektordner.
2. Lege in deinem Projektordner eine Datei an mit dem Namen composer.json und dem Inhalt
{
  "require" : {
    "masterminds/html5": "1.*"
  },
}
3. Öffne eine Shell, gehe zu deinem Projektordner und tippe ein
"php composer.phar install"
4. In deinem Code, mach ein require(_once) auf vendor/autoload.php
5. Verwende einfach die Klassen, ohne weiteres require'n von irgendwelchen Dateien.

Willst du die Abhängigkeit irgendwann mal aktualisieren, dann tippe ein "composer update".
Weiterhin solltest du composer.phar und das vendor-Verzeichnis nicht in deine Versionsverwaltung einchecken.

Composer ist kein Hexenwerk, sondern recht einfach. In 90% der Fälle reichen dir oben genannte Befehle, und dir steht eine ganze neue Welt an Bibliotheken zur Verfügung. Kannst ja mal suchen auf https://packagist.org/.

Bis die Tage,
Matti