магическая функция __call функция не работает

Я пытаюсь работать над перегрузкой с помощью магической функции
вот мой код

класс 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

Решение

Вы не можете иметь несколько определений для метода в одном классе.

Это неправильно и не будет работать независимо от того, какую видимость (публичную / приватную) вы установите для этих методов:

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

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

Кроме того, волшебный метод __call() будет работать только для неопределенных методов или для методов, не видимых в текущей области. Таким образом, вы либо удалите оба function UserLoginили вы удаляете только одну из них, а другую private,

Есть немного документы с этим. 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]