PHP如何处理文件中的函数?

时间:2009-11-13 15:08:43

标签: php

假设我file.php有三个函数和一个echo语句:

function one() {
    return three() . ' This is one.';
}

function two() {
    return 'This is two.';
}

function three() {
    return 'This is three.';
}

echo one(); // string(xx) "This is three. This is one."

首先,即使文件后面出现function one()function three()调用function three()通常也可以接受吗?

其次,当在浏览器中加载file.php(从而在服务器上执行PHP)时,PHP是否会计算function two()的返回值,即使它从未被调用过?

有关PHP如何处理这类平凡事物的进一步阅读的任何链接都会很棒。

5 个答案:

答案 0 :(得分:7)

  

首先,它通常是否可以接受   有函数one()调用函数   三()即使功能三()   出现在文件的后面?

当然可以。源顺序与您调用函数的顺序无关 - 它在执行第一行之前都已解析并可用。

  

其次,当加载file.php时   浏览器,PHP计算回报   函数二()的值,即使   它永远不会被称为?

没有。将在解析期间检查语法错误,但就是这样 - 这些将是E_PARSE级错误。其他错误只能在运行时发现,并且会出现E_ERROR,E_WARNING或E_NOTICE级错误。

http://us2.php.net/manual/en/errorfunc.constants.php

答案 1 :(得分:1)

对于你的第二个问题,答案是否定的,除非专门调用,否则它不会运行该函数。并且函数的编写顺序无关紧要,因此您拥有的代码将起作用。

PHP不在浏览器中运行,它由服务器运行。

答案 2 :(得分:1)

PHP在运行时使用时查找类和函数名,而不是根据第一次解析相关代码的时间。

因此,只要在three()第一次运行之前解析one()的函数声明,就可以在three()内运行one()

答案 3 :(得分:0)

函数或类声明的顺序无关紧要。唯一的一点是在通话前申报。 如果两个不会被调用,它将被解析但不会被评估。

答案 4 :(得分:0)

在调用one()时,已经定义了three(),所以没问题。

在你调用two()之前,不会评估

。(/ p>)

http://www.php.net/manual/en/functions.user-defined.php