微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 不能使非静态方法 – 致命错误

我正在开发一个 PHP Web应用程序.我使用了来自gurrido.net的新数据网格,它在本地运行良好但是当我将其上传到服务器时,我收到以下错误

Fatal error: Cannot make non static method Base::getClassName() static
in class Singletons in /var/www/reskb/PHPinc/Singletons.class.PHP on
line 84

在我没有使用网格的旧版本中,我得到了它的工作.这是我的singletons.class.PHP文件代码

<?
class Singletons extends Base {
    var $objects = array();
    function getClassName() {
        return 'Singletons';
    }
    function _instance() {
        static $_instance = NULL;
        if ($_instance == NULL) {
            $className = Singletons::getClassName();
            $_instance = new $className();
        }
        return $_instance;
    }
    function put($object) {
        $self = Singletons::_instance();
        $className = $object->getClassName();
        $self->objects[$className] = $object;
    }
    function get($className) {
        $self = Singletons::_instance();
        if(!empty($self->objects[$className]))
            return $self->objects[$className];
        else return '';
    }
}
Singletons::_instance();
?>

解决方法

您应该使用object调用函数getClassName或将getClassName定义为static. –

<?PHP
    class Singletons extends Base {
        var $objects = array();
        static function  getClassName() {
            return 'Singletons';
        }
        static function _instance() {
            static $_instance = NULL;
            if ($_instance == NULL) {
                $className = Singletons::getClassName();
                $_instance = new $className();
            }
            return $_instance;
        }
        function put($object) {
            $self = Singletons::_instance();
            $className = $object->getClassName();
            $self->objects[$className] = $object;
        }
        function get($className) {
            $self = Singletons::_instance();
            if(!empty($self->objects[$className]))
                return $self->objects[$className];
            else return '';
        }
    }
    Singletons::_instance();
    ?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐