我正在尝试使用魔术功能进行重载 这是我的代码
class file1
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);
我是我遗失的东西,无法找到究竟是什么
另外我想问的是重载
中还包含的私有函数提前致谢
答案 0 :(得分:1)
对于同一类中的方法,您不能有多个定义。
这是错误的,无论您为这些方法设置的可见性(公共/私人)都无法工作:
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
此外,魔术方法__call()
仅适用于未定义的方法,或仅适用于当前范围内不可见的方法。因此,您既可以删除function UserLogin
,也可以只删除其中一个,另一个private
。
有一些docs。 :)