class Base {
/**
* @return $this
* // или return static - неважно
*/
public static function construct() {
return new static();
}
/**
* @return $this
*/
public function foo() {
return $this;
}
}
class Bar extends Base {
public function baz() {}
}
Bar::construct()
->foo()
->baz(); // ой!