Я пытаюсь понять, как интерпретировать конструкцию PHP include
, например. является ли это текстовым включением, когда оно оценивается и т. д. Как обычно, документация довольно неформальна и расплывчата.
Судя по экспериментам, это синтаксический сахар. В частности, конструкция
include 'Baz.php'
выражение, которое можно заменить на
eval('?>' . file_get_contents('Baz.php', FILE_USE_INCLUDE_PATH))
Это правильно? Верна ли эта замена в общем случае или только в моих тестах?
Изменить: как отмечает bwoebi, в целом это неверно, поскольку код eval
uated не имеет одинаковых магических констант __DIR__
и __FILE__
. Если бы был какой-то способ установить их, мы могли бы смоделировать и это.
Изменить 2: этот вопрос является дубликатом этого: Эквивалент включения с использованием eval. Однако все ответы, по-видимому, опускают точку bwoebi о контексте пути к файлу.
__DIR__
и__FILE__
вам не повезло. (Я сомневаюсь, что даже runkit будет работать с этими константами времени компиляции) - person bwoebi   schedule 15.05.2014