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