Anwendung: In einem PHP Projekt werden von Klassen und Methoden die DocComments ausgewertet und zur Ablaufsteuerung verwendet. Das sieht so aus, dass zum Beispiel Methodenparameter im DocComment typisiert und als required markiert werden können. Auch ein Role-Management ist auf diese Art und Weise implementiert.
Problem: eAccelerator strippt die DocComments beim zweiten include einer Datei (neuer call) heraus, sodass die Validierungen fehlschlagen. Rekompilieren des ByteCode Cache ist nicht möglich, sodass dieses Verhalten nicht geändert werden kann.
Meine bisherigen Lösungsansätze: 1) Da alle includes zentral per __autoload geregelt sind vor dem include ein touch auf die Datei -> Nicht wirklich schön, da die Dateizeiten manipuliert werden und es rechenintensiv ist. 2) Internes Caching der DocComment in einer DB (SqLite) -> Nicht schön, da zu harte Abhängigkeit vom Cache und somit sehr fehleranfällig. 3) Den eigentlichen Sourcecode parsen anstatt Reflection zu verwenden -> Rechenintentiv und bei 'verschlüsselten' Sourcen nicht anwendbar. 4) Eine Art BuildScript, dass alle Klassen im Development-System (es gibt auch noch Live) durchgeht und die DocComments cached -> Aufwendig zu Implementieren, aber mein Favorit.
Nun die Frage: Hab ich Möglichkeiten übersehen? Bin für jeden Hinweis dankbar, da ich mich bei keiner der Alternativen wirklich wohl fühle ;)
Dein Beitrag liegt ja schon etwas zurück. Vielleicht hast du es schon gelöst. Aber generell: Du verwendest Kommentare, die im Prinzip das Programm beeinflussen sollen? Wenn ich es recht verstehe implementierst du dadurch sowas wie Aspektorientierung (AOP), was PHP aber nicht bietet.
Jeder dieser Caches (APC, eAccelerator, xcache) wird die Kommentare "strippen" denn dies speichern ja den geparsten Byte-Code - und das erste was dabei übersprungen wird, sind natürlich die Kommentare. Daher würde ich den kompletten Ansatz verwerfen. Irgendeine Logik für den Programmablauf in Kommentaren der Programmiersprache zu verstecken ist so oder so krude (wenn man keinen Precompiler hat). PHP ist nunmal loosely typed und wenn das Projekt eine strenge Typisierung erfordert, dann ist PHP das falsche Tool.
"Logik für den Programmablauf" -> ist das nicht, sonders Methoden(oder was auch immer) Attribute "dann ist PHP das falsche Tool" -> Es geht hier um Möglichkeiten der Implementierung. 'Gibt es so nicht fertig' ist kein Grund PHP auszuschließen...man darf auch ruhig mal was selber machen.
Weil es darum nicht geht. Aber es dürfen halt nur wenige Anforderungen an den Server-Admin gestellt werden. Stichwort Free Hosting. Bitte keine Diskussion in die Richtung, ist keine Anforderung von mir, sondern kommt von Sales ;)