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
修饰的,此时一般用来实现单例模式,具体代码如下: