class - php构造方法为什么会出现这个错误呢?
本文介绍了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屋!
查看全文