Пример #1
0
        } catch (LocalNonException $e) {
            print "HERE\n";
        } catch (UndefinedClass $e) {
            print "HERE\n";
        } catch (OutOfBoundsException $e) {
            print "HERE\n";
        } catch (\OutOfBoundsException $e) {
            print "HERE\n";
        }
    }
}
class LocalException extends \Exception
{
}
class LocalSubException extends LocalException
{
}
class LocalSubSubException extends LocalSubException
{
}
class LocalNonException
{
}
function something_that_might_break()
{
    print __METHOD__;
    throw new \Exception('a,a,');
}
$f = new foo();
$f->test();
Пример #2
0
        echo "Bar::testPrivate\n";
    }
}
class Foo extends Bar
{
    public function testPublic()
    {
        echo "Foo::testPublic\n";
    }
    private function testPrivate()
    {
        echo "Foo::testPrivate\n";
    }
}
$myFoo = new foo();
$myFoo->test();
// Bar::testPrivate
// Foo::testPublic
/**
Объекты одного типа имеют доступ к элементам с модификаторами private и protected друг друга,
даже если не являются одним и тем же экземпляром. Это объясняется тем, что реализация видимости
элементов известна внутри этих объектов.

Пример #3 Доступ к элементам с модификатором private из объектов одного типа
*/
class Test
{
    private $foo;
    public function __construct($foo)
    {
        $this->foo = $foo;
Пример #3
0
<?php

class foo
{
    public function test(&$x)
    {
        static $lambda;
        $lambda = function &() use(&$x) {
            return $x = $x * $x;
        };
        return $lambda();
    }
}
$test = new foo();
$y = 2;
var_dump($test->test($y));
var_dump($x = $test->test($y));
var_dump($y, $x);
Пример #4
0
    function test_bar()
    {
        var_dump(get_parent_class());
    }
}
class goo extends bar
{
    function test_goo()
    {
        var_dump(get_parent_class());
    }
}
$bar = new bar();
$foo = new foo();
$goo = new goo();
$foo->test();
$bar->test();
$bar->test_bar();
$goo->test();
$goo->test_bar();
$goo->test_goo();
var_dump(get_parent_class($bar));
var_dump(get_parent_class($foo));
var_dump(get_parent_class($goo));
var_dump(get_parent_class("bar"));
var_dump(get_parent_class("foo"));
var_dump(get_parent_class("goo"));
var_dump(get_parent_class("i"));
var_dump(get_parent_class(""));
var_dump(get_parent_class("[[[["));
var_dump(get_parent_class(" "));
Пример #5
0
function d()
{
    $obj = new foo();
    return $obj->test();
}
Пример #6
0
<?php

class foo
{
    public function test()
    {
        call_user_func(array('FOO', 'ABC'));
        call_user_func(array($this, 'ABC'));
        foo::XYZ();
        self::WWW();
        call_user_func('FOO::ABC');
    }
    function __call($a, $b)
    {
        print "__call:\n";
        var_dump($a);
    }
    public static function __callStatic($a, $b)
    {
        print "__callstatic:\n";
        var_dump($a);
    }
}
$x = new foo();
$x->test();
$x::A();
foo::B();
$f = 'FOO';
$f::C();
$f::$f();
foo::$f();
Пример #7
0
<?php

class foo
{
    const AAA = 'x';
    const BBB = 'a';
    const CCC = 'a';
    const DDD = self::AAA;
    private static $foo = array(self::BBB => 'a', self::CCC => 'b', self::DDD => self::AAA);
    public static function test()
    {
        self::$foo;
    }
}
foo::test();
print 1;
Пример #8
0
            test_class::test_func4();
        } else {
            echo "test_func4 isn't callable from child\n";
        }
    }
}
$object = new test_class();
$object->test();
if (is_callable(array($object, 'test_func1'))) {
    $object->test_func1();
} else {
    echo "test_func1 isn't callable from outside\n";
}
if (is_callable(array($object, 'test_func2'))) {
    $object->test_func2();
} else {
    echo "test_func2 isn't callable from outside\n";
}
if (is_callable(array('test_class', 'test_func3'))) {
    test_class::test_func3();
} else {
    echo "test_func3 isn't callable from outside\n";
}
if (is_callable(array('test_class', 'test_func4'))) {
    test_class::test_func4();
} else {
    echo "test_func4 isn't callable from outside\n";
}
$object = new foo();
$object->test();
Пример #9
0
<?php

class bar
{
}
class foo
{
    public function test()
    {
        class_alias('bar', 'static');
        return new static();
    }
}
$a = new foo();
var_dump($a->test());