gpt4 book ai didi

php - 魔法函数 __call 函数不起作用

转载 作者:行者123 更新时间:2023-12-02 17:22:50 25 4
gpt4 key购买 nike

我正在尝试使用魔术函数进行重载

这是我的代码:

类文件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);

我是我丢失的东西,无法找到它到底是什么

另外我想问的是私有(private)函数是否也包含在重载中。

最佳答案

同一类中的方法不能有多个定义。

这是错误的,无论您为这些方法设置何种可见性(公共(public)/私有(private))都不会起作用:

public function UserLogin($data0='')
{
echo $data0;
}

public function UserLogin($data0='',$data2='')
{
echo $pass
}

此外,魔术方法__call() 只对未定义的方法有效,或者对当前范围内不可见的方法有效。

因此,您要么删除两个 function UserLogin,要么只删除其中一个并将另一个设置为 private

有一些docs

关于php - 魔法函数 __call 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41361758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com