0

我想在静态方法中调用非静态方法。例如

而不是调用以下方法

$user = new User();
$userdata = $user->data($argument);

我想打电话如下

$usedata = User::data($argument);

首先,我使用以下设置构建

Class User{

    public static function __callStatic($methodname, $argument) {
    $objName =   __CLASS__; 
    $obj = new $objName;
    return $obj->find($argument);
    }
    public function find($argument) {
        return $argument*2;
    } 
}

 echo User::find(2);

但它显示警告消息但代码已成功执行。这种情况还有其他更好的解决方案吗?很抱歉我犯的任何语法错误,因为我不是母语人士,而且我的英语不是很流利。

4

1 回答 1

0

如果您的 find() 方法不使用类上下文 ($this),并且您需要静态调用此方法,则只需将其声明为静态。

于 2013-11-10T20:45:27.900 回答