以下问题是否应被视为正常行为或错误?
<?php
namespace Ns;
function func ()
{
echo "Hello\n";
return true;
}
func(); // ok
assert('func()'); // "Call to undefined function func()"
答案 0 :(得分:1)
assert
我假设其行为方式与eval
相同,因为它会在传递给它的代码进行评估时将执行切换到全局命名空间。在调用中指定名称空间的工作方式与预期相同:
<?php
namespace Ns;
function func ()
{
echo "Hello\n";
return true;
}
func(); // ok
assert('Ns\func()');
我认为这是正常行为; assert
是一个内置函数,您基本上是将一个字符串传递给它进行评估。当执行传递到assert
函数内部时,它将位于完全不同的命名空间(主要是全局命名空间)。