PHP のinclude
構文をどのように解釈するか、たとえば、テキストが含まれているかどうか、いつ評価されるかなどを調べようとしています。いつものように、ドキュメントはかなり非公式で曖昧です。
実験に基づくと、それはシンタックス シュガーのようです。具体的には、コンストラクト
include 'Baz.php'
に置き換えることができる式です。
eval('?>' . file_get_contents('Baz.php', FILE_USE_INCLUDE_PATH))
これは正しいです?この置換は一般的な場合に当てはまりますか、それとも私のテストでのみ当てはまりますか?
編集: bwoebi が指摘しているように、uatedeval
コードには同じ定数__DIR__
と__FILE__
魔法の定数がないため、これは一般的に正しくありません。それらを設定する方法があれば、それもモデル化できます。
編集 2: この質問は、この質問の複製です: eval を使用した include と同等です。ただし、そこにあるすべての回答は、ファイルパスのコンテキストに関するbwoebiのポイントを省略しているようです。