b.php
文件
<?php
function ff() { echo "B"; }
还有这个
a.php
文件
<?php
if ( true ) {
include ("b.php");
ff();
exit;
}
function ff() { echo "A"; }
php a.php
给予
PHP Fatal error: Cannot redeclare ff()
嗯,好的。那如果我再跑呢
php a.php
用这个
密码
<?php
if ( true ) {
include ("b.php");
ff();
exit;
}
else {
function ff() { echo "A"; }
}
B
正如所料。
在第一种情况下,PHP读取并解析整个文件。意思是,在
虽然
exit
保证在运行时我们不会到达第二个
ff()
.
然而,在第二种情况下,它在
编译器的行为似乎因函数是否为顶级而有所不同。。。虽然
PHP中的所有函数和类都具有全局作用域
doc
)
现在,如何将其转化为一个非基于意见的问题:)
因此,两种选择似乎都是重命名
ff
ffa
和
ffb
,或添加一个长的
else { ... }
. 或者改变整个结构。。。