Warum sind dynamische Konstrukte für PHP Compiler (HPHP) schwierig?

8

Ich las Paul Biggers Ссылка und er erwähnt, dass HPHP dynamische Konstrukte nicht vollständig unterstützt. Er stellt dann fest: "Eine naive Herangehensweise besteht darin, einfach eine Switch-Anweisung einzubauen und alles zusammenzustellen, was Sinn ergibt." Sagt er, dass Sie anstelle eines dynamischen Includes switch-Anweisungen verwenden könnten, um die richtige Datei einzubinden? Wenn ja, warum sollte das funktionieren und warum ist es einfacher, einen Compiler zu kompilieren? Wie immer, danke für Ihre Zeit!

    
blacktie24 29.06.2011, 18:02
quelle

2 Antworten

2

nach meinem Verständnis, wenn Sie das haben

%Vor%

Der Compiler würde keine Ahnung haben, was Sie einbeziehen werden. Auf der anderen Seite, mit diesem

%Vor%

sie können einfach "bar" und "quux" kompilieren und sie in eine if-Anweisung einfügen, die $foo überprüft und ausführt, was angemessen ist.

    
user187291 29.06.2011 18:44
quelle
2

Ein Compiler erwartet, dass er alle Quell- und Binärdateien identifizieren kann, die von dem zu kompilierenden Programm verwendet werden können.

%Vor%

Wenn die in $ random_file angegebene Datei Konstanten, Klassen, Variablen deklariert, kann der Compiler nichts wissen, da der Wert von $ random_file zur Kompilierzeit nicht bekannt ist. Ihr Code, der diese Konstanten, Klassen und Variablen verwendet, wird auf schwer zu debuggende Weise fehlschlagen. Die switch-Anweisung würde die Liste möglicher Dateien bekannt machen, so dass der Compiler relevante Deklarationen entdecken kann.

Sprachen, die kompiliert werden sollen, haben dynamische Linker und Fremdfunktionsschnittstellen, die eine ähnliche Funktionalität bieten, um ($ random_file) einzuschließen, ohne den expliziten Wechsel zu erfordern.

    
Magicianeer 29.06.2011 18:57
quelle