class - php构造方法为什么会出现这个错误呢?

查看:113
本文介绍了class - php构造方法为什么会出现这个错误呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

class Singleton{
    protected function __construct()
    {
        echo 2;
    }
}
$test = new Singleton();

Fatal error: Call to protected Singleton::__construct() from invalid context
Fatal error: Call to private Singleton::__construct() from invalid context

必须要用public才行,protected & private 都会出现这个问题。

解决方案

只有public修饰的方法才可以在类的外部访问,protected方法和private方法只能在类中访问,区别在与protected方法可以在子类中访问而private方法不可以。

一般情况下构造函数都是public的,这样就可以在类的外部通过 new ClassName() 的方式实例化类。

如果构造函数是private或者protected修饰的,此时一般用来实现单例模式,具体代码如下:

class ClassName {
    static $instance;
    
    private function __construct(){}
    
    public static function getInstance() {
        if (static::$instance instanceof static) {
            return static::$instance;
        }
        
        return static::$instance = new static();
    }
}

这篇关于class - php构造方法为什么会出现这个错误呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆