假设我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如何处理这类平凡事物的进一步阅读的任何链接都会很棒。
答案 0 :(得分:7)
首先,它通常是否可以接受 有函数one()调用函数 三()即使功能三() 出现在文件的后面?
当然可以。源顺序与您调用函数的顺序无关 - 它在执行第一行之前都已解析并可用。
其次,当加载file.php时 浏览器,PHP计算回报 函数二()的值,即使 它永远不会被称为?
没有。将在解析期间检查语法错误,但就是这样 - 这些将是E_PARSE级错误。其他错误只能在运行时发现,并且会出现E_ERROR,E_WARNING或E_NOTICE级错误。
答案 1 :(得分:1)
对于你的第二个问题,答案是否定的,除非专门调用,否则它不会运行该函数。并且函数的编写顺序无关紧要,因此您拥有的代码将起作用。
PHP不在浏览器中运行,它由服务器运行。
答案 2 :(得分:1)
PHP在运行时使用时查找类和函数名,而不是根据第一次解析相关代码的时间。
因此,只要在three()
第一次运行之前解析one()
的函数声明,就可以在three()
内运行one()
。
答案 3 :(得分:0)
函数或类声明的顺序无关紧要。唯一的一点是在通话前申报。 如果两个不会被调用,它将被解析但不会被评估。
答案 4 :(得分:0)
在调用one()时,已经定义了three(),所以没问题。
在你调用two()之前,不会评估。(/ p>)