summaryrefslogtreecommitdiff
path: root/Zend/tests/objects_022.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/tests/objects_022.phpt')
-rw-r--r--Zend/tests/objects_022.phpt39
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