Я пытаюсь работать над перегрузкой с помощью магической функции
вот мой код
класс 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);
Я могу быть чем-то, чего мне не хватает, и не могу найти, что именно
Также я хочу спросить, частные функции также покрыты перегрузкой
заранее спасибо
Вы не можете иметь несколько определений для метода в одном классе.
Это неправильно и не будет работать независимо от того, какую видимость (публичную / приватную) вы установите для этих методов:
public function UserLogin($data0='')
{
echo $data0;
}
public function UserLogin($data0='',$data2='')
{
echo $pass
}
Кроме того, волшебный метод __call()
будет работать только для неопределенных методов или для методов, не видимых в текущей области. Таким образом, вы либо удалите оба function UserLogin
или вы удаляете только одну из них, а другую private
,
Есть немного документы с этим. 🙂
Других решений пока нет …