PHP,チェーンメソッドの実装

PHPでチェーンメソッドを実装したい時は以下のように$thisをReturnするメソッドを書くと良いです.

class Chain
{
    private static $instance;
    private function __construct(){}

    public static function getInstance()
    {
        if (!self::$instance) self::$instance = new Chain;
        return self::$instance;
    }

    public function method1()
    {
        echo('method 1');
        return $this;
    }

    public function method2()
    {
        echo('method 2');
        return $this;
    }
}

ここで,constructをprivateで定義することで,他のクラスからnewすることができなくなり,staticで$instanceを定義することで以下のようにして呼び出すことができます.

>>> Chain::getInstance()->method1()->method2();
=>
    'method 1'
    'method 2'