0

我正在学习在php.net上包含和要求构造,并发现这条规则的例外是魔术常量,在包含发生之前由解析器评估。在该页面的第7 段,但不明白魔术常量与 php 中的 include 和 require 的关系是什么。

谁能用简单易懂的语言说出来?

对我的问题进行否定标记很好,但请务必回答,我想知道和学习,否定标记无关紧要。

4

1 回答 1

1

在解析您的代码之前,解析器会解析所有 include 和 require,因此它可以像解析一个脚本一样解析所有内容。但是,在它解决这些问题之前,任何魔法常数__DIR__都会被解决。

一个例子:

假设您有两个文件:

文件1.php

<?php
require __DIR__ . '/file2.php';

echo 'Hello ' . $a;

文件2.php

<?php
$a = 'World';

如你所见,有一个神奇的常数:__DIR__在里面。该常量将返回我写入它的文件的绝对路径。因此,解析首先解决了这个问题:

<?php
require '/the-current-folder/file2.php';

然后它实际上包括任何includerequire所以它得到:

<?php
$a = 'World';

echo 'Hello ' . $a;

然后它解析脚本:

Hello World
于 2017-08-30T15:20:43.080 回答