神奇的功能__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); 

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

此外,我要问的是私人聚会也包括在提前

+0

不能有两个方法,在一类相同的名称。 – arkascha

+0

这不是'__call'功能是如何工作的。它用于处理给定对象内部_not_定义的方法调用。 – arkascha

+0

检查这在PHP替代函数重载http://*.com/questions/4697705/php-function-overloading – rahulsm

重载

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

这是错误的,并不会工作,无论什么样的透明度(公/私)设置这些方法:

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

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

此外,魔术方法__call()只会未定义方法的工作,或方法不在当前范围内可见。所以,你要么删除这两个function UserLogin,或者只删除其中之一,并令对方private

有一些docs这一点。 :)