php - PHP中用静态调用非静态方法

标签 php

我的代码如下所示:

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/

相关文章:

PHP - 从 mySQL 服务器检索数据

PHP OOP:为什么 self::$$property[$key] 不起作用?

php - 如何持续保持与当年硬件相关的 bcrypt 轮数?

php - MySQL RLIKE 特殊字符转义 PHP

php - 如何在 foreach 循环中创建 HTML 表格

php - 从表连接获取我的信息以在 PHP 中显示时出现问题

php - 在ajax中混合javascript和php变量

php - Netbeans 和 Xampp

php - 使用 HTML 表单作为方案动态查询数据库

php - 需要 "pack"的帮助,用于 perl 和 php