PSR 和构造函数可见性

PSR and constructor visibility

根据PSR-2

Visibility MUST be declared on all properties and methods

但是 __construct 呢,它是特定的功能,我想知道当我们使用 PSR 时它是否也应该默认标记为 public

是的,您还应该声明 __construct() 方法的可见性。在某些情况下 __construct 不像

public
abstract class Singleton {

    private static $instances;

    final public static function getInstance() {
        $className = get_called_class();

        if(isset(self::$instances[$className]) == false) {
            self::$instances[$className] = new static();
        }
        return self::$instances[$className];
    }

    protected function  __construct() { }

}