【发布时间】:2018-02-08 09:15:48
【问题描述】:
我正在学习在 php.net 上包含和要求构造,并发现行 此规则的一个例外是魔术常量,在包含发生之前由解析器评估。在 @ 的第 7 段987654322@ 但不明白魔术常量与php中include和require的关系是什么。
谁能用简单易懂的话说出来?
我的问题可以给负分,但请务必回答,我想知道和学习,负分无所谓。
【问题讨论】:
标签: php include require magic-constants
我正在学习在 php.net 上包含和要求构造,并发现行 此规则的一个例外是魔术常量,在包含发生之前由解析器评估。在 @ 的第 7 段987654322@ 但不明白魔术常量与php中include和require的关系是什么。
谁能用简单易懂的话说出来?
我的问题可以给负分,但请务必回答,我想知道和学习,负分无所谓。
【问题讨论】:
标签: php include require magic-constants
在解析您的代码之前,解析器会解析所有 include 和 require,因此它可以像解析一个脚本一样解析它们。但是,在它解析这些之前,任何魔术常量,如 __DIR__ 都会被解析。
假设您有两个文件:
file1.php
<?php
require __DIR__ . '/file2.php';
echo 'Hello ' . $a;
file2.php
<?php
$a = 'World';
如您所见,其中有一个神奇的常数:__DIR__。该常量将返回我写入它的文件的绝对路径。所以解析首先解决:
<?php
require '/the-current-folder/file2.php';
然后它实际上包括任何include 和require 所以它得到:
<?php
$a = 'World';
echo 'Hello ' . $a;
然后解析脚本:
Hello World
【讨论】: