Пример #1
0
 public static function __callStatic($name, $args)
 {
     if (!self::$instance) {
         self::$instance = new D\ump();
     }
     return call_user_func_array([self::$instance, $name], $args);
 }
Пример #2
0
<?php

class C
{
    /** @return static */
    static function instance()
    {
        return new static();
    }
    /** @return static */
    function f()
    {
        return $this;
    }
}
class D extends C
{
}
class E
{
}
function g(E $p)
{
}
g(D::instance()->f());
g(C::instance()->f());