Пример #1
0
function main()
{
    $c = new C();
    B::test($c);
    C::test($c);
    D::test($c);
}
Пример #2
0
function main()
{
    $d = new D();
    $d->test();
    $d->test2();
    $e = new E();
    $e->test();
    $e->test2();
}
Пример #3
0
<?php

class C
{
    private function foo()
    {
        echo "C::foo\n";
    }
    public function test()
    {
        // This should not call C::foo, it should fatal
        D::foo();
    }
}
class D extends C
{
    private function foo()
    {
        echo "D::foo\n";
    }
}
$obj = new D();
$obj->test();
Пример #4
0
<?php

class A
{
    public static function test($x = null)
    {
        if (!is_null($x)) {
            echo "{$x}\n";
        }
        return get_called_class();
    }
}
class B extends A
{
}
class C extends A
{
}
class D extends A
{
}
echo A::test(B::test(C::test(D::test()))) . "\n";
?>
==DONE==
Пример #5
0
<?php

trait U
{
    public function test()
    {
        echo __CLASS__ . "\n";
        $this->foo();
        (yield null);
    }
}
class D
{
    use U;
    protected function foo()
    {
        echo "U::foo\n";
    }
}
$obj = new D();
$x = $obj->test();
foreach ($x as $v) {
}
Пример #6
0
<?php

class C
{
    public static function test()
    {
        D::prot();
        print_r(get_class_methods("D"));
    }
}
class D extends C
{
    protected static function prot()
    {
        echo "Successfully called D::prot().\n";
    }
}
D::test();