我的代码如下所示:
abstract class Object
{
public static function __callStatic($name, $parameters)
{
$object = get_called_class();
$object = new $object;
if (method_exists($object, $name)) {
return call_user_func_array(array($object, $name), $parameters);
}
}
}
class Log extends Object
{
public function message($message)
{
echo 'Log: '.$message.'.<br>';
}
}
现在,我打电话:
Log::message('test');
这是结果:
严格标准:非静态方法 Log::message() 不应静态调用...
日志:测试。
有人可以帮助我吗?
最佳答案
__callStatic
仅当您的方法不存在时才有效。
将您的方法从“message”重命名为“messageStatic”并更改 __callStatic
方法:
if (method_exists($object, $name.'Static')) {
return call_user_func_array(array($object, $name.'Static'), $parameters);
}
关于php - PHP中用静态调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22936085/