我在单例类中实现了一个带有可选参数的函数。
private function MyFunction($Name = "")
{
$localCopy = $Name;
//this check fails, EMPTY is printed!
if (empty($Name))
echo "EMPTY";
else
echo "NOT EMPTY";
//this is working, NOT EMPTY is printed
if (empty($localCopy))
echo "EMPTY";
else
echo "NOT EMPTY";
}
此函数由同一类中的另一个函数调用。
public function OtherFunction($Name = '')
{
self::MyFunction($Name);
}
从外部调用OtherFunction
OtherFunction("Hello");
为什么空检查仅适用于本地副本? 有人能解释一下吗??
答案 0 :(得分:0)
没有。两个变量
$Name
和
$localCopy
不应该是可以区分的。两者都指向相同的东西'。
此外,$localCopy
通常不是副本,只是$name
表示的第二个名称。
答案 1 :(得分:0)
我已经解决了这个问题。该死!!
我在代码中使用了$ Name和$ name的混合。两个不同的变量! 使用了未分配的变量....
来自C / C ++ / C#的人真是个丑陋的东西:(现在警告,没有错误....:)