我想在静态方法中调用非静态方法。例如
而不是调用以下方法
$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);
但它显示警告消息但代码已成功执行。对于这种情况,还有其他更好的解决方案吗?很抱歉,由于我不是母语,而且我的英语不是很流利,所以我犯了任何语法错误。
答案 0 :(得分:0)
如果你的find()方法不使用类上下文($ this),并且你需要静态调用这个方法,那么只需将它声明为静态。