PSR和构造函数可见性

According to PSR-2

Visibility MUST be declared on all properties and methods

but what about __construct, it's specific function and I was wondering if it should also be marked by default as public when we're using PSR?

Yes you should also declare visibility for the __construct() method. In some cases the __construct is not public like

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() { }

}