加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 15:55:45 所属栏目:PHP教程 来源:网络整理
导读:我正在开发一个 PHP Web应用程序.我使用了来自gurrido.net的新数据网格,它在本地运行良好但是当我将其上传到服务器时,我收到以下错误: Fatal error: Cannot make non static method Base::getClassName() static in class Singletons in /var/www/reskb/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();
    ?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读