diff options
Diffstat (limited to 'Zend/tests/objects_022.phpt')
| -rw-r--r-- | Zend/tests/objects_022.phpt | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Zend/tests/objects_022.phpt b/Zend/tests/objects_022.phpt new file mode 100644 index 0000000000..5a80e0a411 --- /dev/null +++ b/Zend/tests/objects_022.phpt @@ -0,0 +1,39 @@ +--TEST-- +Testing 'self', 'parent' as type-hint +--FILE-- +<?php + +interface iTest { } + +class baz implements iTest {} + +class bar { } + +class foo extends bar { + public function testFoo(self $obj) { + var_dump($obj); + } + public function testBar(parent $obj) { + var_dump($obj); + } + public function testBaz(iTest $obj) { + var_dump($obj); + } +} + +$foo = new foo; +$foo->testFoo(new foo); +$foo->testBar(new bar); +$foo->testBaz(new baz); +$foo->testFoo(new stdClass); // Catchable fatal error + +?> +--EXPECTF-- +object(foo)#%d (0) { +} +object(bar)#%d (0) { +} +object(baz)#%d (0) { +} + +Catchable fatal error: Argument 1 passed to foo::testFoo() must be an instance of foo, instance of stdClass given, called in %s on line %d and defined in %s on line %d |
