提问人:Jeff 提问时间:11/13/2009 最后编辑:Jeff 更新时间:11/13/2009 访问量:205
PHP 如何处理文件中的函数?
How does PHP process functions in a file?
问:
假设我有三个函数和一个语句: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()
其次,当加载到浏览器中(从而在服务器上执行 PHP)时,PHP 是否计算 的返回值,即使它从未被调用?file.php
function two()
任何进一步阅读PHP如何处理此类平凡事物的链接都很棒。
答:
对于第二个问题,答案是否定的,除非专门调用它,否则它不会运行该函数。函数的编写顺序并不重要,因此您拥有的代码将起作用。
PHP 不是在浏览器中运行,而是由服务器运行的。
首先,是否普遍可以接受 have function one() 调用函数 three() 即使函数 three() 稍后出现在文件中?
当然。source-order 与调用函数的顺序无关 - 在执行第一行之前,它全部被解析并可用。
其次,当 file.php 加载到 浏览器,PHP会计算收益吗 函数 two() 的值,即使 它从来没有叫过?
不。在解析过程中将检查语法错误,但仅此而已 - 这些将是E_PARSE级错误。其他错误只能在运行时发现,并且是 E_ERROR、E_WARNING 或 E_NOTICE 级别的错误。
https://www.php.net/manual/en/errorfunc.constants.php
评论
PHP 在运行时使用类和函数名称时查找它们,而不是根据首次解析相关代码的时间查找它们。
所以,在里面运行是可以的,只要第一次运行之前解析的函数声明就可以了。three()
one()
three()
one()
函数或类声明的顺序无关紧要。唯一的一点是在调用之前声明。 如果不会调用两个,则将对其进行解析,但不会进行抽取。
当 one() 被调用时,three() 已经定义好了,所以没问题。
在调用 two() 之前,不会计算 two()。
评论