Exemplo n.º 1
0
 public function test()
 {
     // FPushClsMethodD
     C2::__call("a", "b", "c", "d");
     C2::foo("a", "b", "c", "d");
     // FPushClsMethod
     $cls = 'C2';
     $cls::__call("a", "b", "c", "d");
     $cls::foo("a", "b", "c", "d");
     $fn = '__call';
     C2::$fn("a", "b", "c", "d");
     $fn = 'foo';
     C2::$fn("a", "b", "c", "d");
     $fn = '__call';
     $cls::$fn("a", "b", "c", "d");
     $fn = 'foo';
     $cls::$fn("a", "b", "c", "d");
     // FPushClsMethodF
     self::__call("a", "b", "c", "d");
     self::foo("a", "b", "c", "d");
 }
Exemplo n.º 2
0
<?php

trait T
{
    function info()
    {
        (yield __METHOD__);
        (yield __CLASS__);
        (yield __TRAIT__);
    }
}
class C1
{
    use T;
}
class C2
{
    use T;
}
$o1 = new C1();
foreach ($o1->info() as $info) {
    var_dump($info);
}
$o2 = new C2();
foreach ($o2->info() as $info) {
    var_dump($info);
}
Exemplo n.º 3
0
function main2()
{
    $obj = new C2();
    $obj->test();
}
Exemplo n.º 4
0
    {
        echo "B2::bar\n";
    }
    public function baz()
    {
        $this->bar();
    }
}
class C2 extends B2
{
    public function bar()
    {
        echo "C2::bar\n";
    }
}
$obj = new C2();
$obj->baz();
class A3
{
    private function bar()
    {
        echo "A3::bar\n";
    }
}
class B3 extends A3
{
    protected function bar()
    {
        echo "B3::bar\n";
    }
    public function baz()
Exemplo n.º 5
0
<?php

error_reporting(E_ALL);
trait Counter
{
    public function inc()
    {
        static $c = 0;
        $c = $c + 1;
        echo "{$c}\n";
    }
}
class C1
{
    use Counter;
}
class C2
{
    use Counter;
}
$o = new C1();
$o->inc();
$o->inc();
$p = new C2();
$p->inc();
$p->inc();
Exemplo n.º 6
0
<?php

class C1
{
    public function __call($name, $params)
    {
        return null;
    }
}
class C2 extends C1
{
}
$v = new C2();
$v->m();
Exemplo n.º 7
0
    public static $x = 1;
    public function printX()
    {
        var_dump(self::$x);
    }
}
class C1
{
    use T;
}
class C2
{
    use T;
}
$o1 = new C1();
$o2 = new C2();
var_dump(T::$x);
var_dump(C1::$x);
var_dump(C2::$x);
$o1->printX();
$o2->printX();
T::$x++;
var_dump(T::$x);
var_dump(C1::$x);
var_dump(C2::$x);
$o1->printX();
$o2->printX();
C1::$x++;
var_dump(T::$x);
var_dump(C1::$x);
var_dump(C2::$x);
Exemplo n.º 8
0
{
    protected abstract function gpc();
    public function gen()
    {
        (yield $this->gpc());
    }
}
class C1
{
    use T;
    protected function gpc()
    {
        return 1;
    }
}
class C2
{
    use T;
    protected function gpc()
    {
        return 2;
    }
}
$obj1 = new C1();
$obj2 = new C2();
$c1 = $obj1->gen();
$c2 = $obj2->gen();
$c1->next();
var_dump($c1->current());
$c2->next();
var_dump($c2->current());
Exemplo n.º 9
0
{
    protected $p;
    static function make()
    {
        return new static();
    }
}
class C2 extends C1
{
    static function f1()
    {
        $c = parent::make();
        $c->p = 2;
    }
    static function f2()
    {
        $c = self::make();
        $c->p = 2;
        echo $c->p;
    }
    static function f3()
    {
        $c = self::make();
        $c->p = 2;
        echo $c->p;
    }
}
C2::f1();
C2::f2();
C2::f3();
Exemplo n.º 10
0
    {
    }
}
$x = new C1();
var_dump($x());
var_dump($x->__invoke());
$x();
$x->__invoke();
$x = function () {
    return 0;
};
var_dump($x());
var_dump($x->__invoke());
$x();
$x->__invoke();
$x = new C2();
$a = $b = $c = $d = 1;
$e =& $x($a);
$e = 2;
var_dump($a);
$e =& $x->__invoke($b);
$e = 3;
var_dump($b);
$x($b);
$x->__invoke($b);
$x = function &(&$a) {
    return $a;
};
$e =& $x($c);
$e = 4;
var_dump($c);
Exemplo n.º 11
0
    }
    function __get($var)
    {
        echo "C8::__get({$var})\n";
        return $this->g($var);
    }
    function g($var)
    {
        echo "C8::g({$var})\n";
        return $this->{$var};
    }
}
$c1 = new C1();
$c1->f1();
var_dump($a1);
$c1->f2();
$c1->f3();
$c2 = new C2();
$c2->f1();
$c3 = new C3();
$c3->f1();
$c4 = new C4();
$c4->f1();
$c5 = new C5();
$c5->f1();
$c6 = new C6();
$c6->f1();
$c7 = new C7();
$c7->f1();
$c8 = new C8();
$c8->f1();
<?php

class C1
{
    protected $p;
}
class C2 extends C1
{
    static function f(C2 $c)
    {
        $c->p = 2;
    }
}
$c = new C2();
C2::f($c);