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

How does PHP process functions in a file?

提问人:Jeff 提问时间:11/13/2009 最后编辑:Jeff 更新时间:11/13/2009 访问量:205

问:

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

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.phpfunction two()

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

PHP的

评论


答:

1赞 Vincent Ramdhanie 11/13/2009 #1

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

PHP 不是在浏览器中运行,而是由服务器运行的。

7赞 Peter Bailey 11/13/2009 #2

首先,是否普遍可以接受 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

评论

0赞 Franz 11/13/2009
我不完全记得了,但这不是用 PHP5 添加的,还是别的什么(我指的是问题一......
1赞 gnud 11/13/2009 #3

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

所以,在里面运行是可以的,只要第一次运行之前解析的函数声明就可以了。three()one()three()one()

0赞 erenon 11/13/2009 #4

函数或类声明的顺序无关紧要。唯一的一点是在调用之前声明。 如果不会调用两个,则将对其进行解析,但不会进行抽取。

0赞 Brandon Henry 11/13/2009 #5

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

在调用 two() 之前,不会计算 two()。

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