神奇的功能__call功能无法正常工作
问题描述:
我试图使用神奇的功能 这里超载工作是我的代码神奇的功能__call功能无法正常工作
类文件1
class vLiteUser{
public function __call($methodname,$arguments)
{
if($methodname=='UserLogin'){
switch(count($arguments)){
case 1:
$this->UserLogin($arguments[0]);
break;
case 2:
$this->UserLogin($arguments[0],$arguments[1]);
break;
default: echo "string";
break
}
}
}
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
} ?>
我已经在另一个文件中创建的对象
$userObj = new vLiteUser();
$userObj->UserLogin(data0,data1);
$userObj->UserLogin(data0);
我的东西我已经丢失,无法找到它到底是什么
此外,我要问的是私人聚会也包括在提前
答
重载
谢谢你不能有多个定义在同一个类中的方法。
这是错误的,并不会工作,无论什么样的透明度(公/私)设置这些方法:
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
此外,魔术方法__call()
只会未定义方法的工作,或方法不在当前范围内可见。所以,你要么删除这两个function UserLogin
,或者只删除其中之一,并令对方private
。
有一些docs这一点。 :)
不能有两个方法,在一类相同的名称。 – arkascha
这不是'__call'功能是如何工作的。它用于处理给定对象内部_not_定义的方法调用。 – arkascha
检查这在PHP替代函数重载http://stackoverflow.com/questions/4697705/php-function-overloading – rahulsm