有没有办法在静态方法中调用非静态方法

时间:2013-11-10 20:18:45

标签: php

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

而不是调用以下方法

$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);

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

1 个答案:

答案 0 :(得分:0)

如果你的find()方法不使用类上下文($ this),并且你需要静态调用这个方法,那么只需将它声明为静态。