string(9) "FooBarBaz"
===ArrayOverloading===
ArrayProxy::__construct(0)
-object(ArrayProxy)#1 (2) {
+object(ArrayProxy)#%d (2) {
["object":"ArrayProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
array(1) {
[0]=>
ArrayProxy::__construct(0)
ArrayProxy::offsetUnset(0, name)
ArrayProxy::__construct(0)
-object(ArrayProxy)#1 (2) {
+object(ArrayProxy)#%d (2) {
["object":"ArrayProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
array(1) {
[0]=>
unicode(9) "FooBarBaz"
===ArrayOverloading===
ArrayProxy::__construct(0)
-object(ArrayProxy)#1 (2) {
+object(ArrayProxy)#%d (2) {
[u"object":u"ArrayProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
array(1) {
[0]=>
ArrayProxy::__construct(0)
ArrayProxy::offsetUnset(0, name)
ArrayProxy::__construct(0)
-object(ArrayProxy)#1 (2) {
+object(ArrayProxy)#%d (2) {
[u"object":u"ArrayProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
array(1) {
[0]=>
Notice: Array to string conversion in %s on line %d
ArrayReferenceProxy::__construct(Array)
-object(ArrayReferenceProxy)#1 (2) {
+object(ArrayReferenceProxy)#%d (2) {
["object":"ArrayReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
array(1) {
[0]=>
Notice: Array to string conversion in %s on line %d
ArrayReferenceProxy::__construct(Array)
-object(ArrayReferenceProxy)#1 (2) {
+object(ArrayReferenceProxy)#%d (2) {
["object":"ArrayReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
array(1) {
[0]=>
Notice: Array to string conversion in %s on line %d
ArrayReferenceProxy::__construct(Array)
-object(ArrayReferenceProxy)#1 (2) {
+object(ArrayReferenceProxy)#%d (2) {
[u"object":u"ArrayReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
array(1) {
[0]=>
Notice: Array to string conversion in %s on line %d
ArrayReferenceProxy::__construct(Array)
-object(ArrayReferenceProxy)#1 (2) {
+object(ArrayReferenceProxy)#%d (2) {
[u"object":u"ArrayReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
array(1) {
[0]=>
string(9) "FooBarBaz"
===ArrayOverloading===
ArrayAccessReferenceProxy::__construct(0)
-object(ArrayAccessReferenceProxy)#1 (3) {
+object(ArrayAccessReferenceProxy)#%d (3) {
["object":"ArrayAccessReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
&array(1) {
[0]=>
ArrayAccessReferenceProxy::__construct(0)
ArrayAccessReferenceProxy::offsetUnset(0, name)
ArrayAccessReferenceProxy::__construct(0)
-object(ArrayAccessReferenceProxy)#1 (3) {
+object(ArrayAccessReferenceProxy)#%d (3) {
["object":"ArrayAccessReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
["person"]=>
&array(1) {
[0]=>
unicode(9) "FooBarBaz"
===ArrayOverloading===
ArrayAccessReferenceProxy::__construct(0)
-object(ArrayAccessReferenceProxy)#1 (3) {
+object(ArrayAccessReferenceProxy)#%d (3) {
[u"object":u"ArrayAccessReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
&array(1) {
[0]=>
ArrayAccessReferenceProxy::__construct(0)
ArrayAccessReferenceProxy::offsetUnset(0, name)
ArrayAccessReferenceProxy::__construct(0)
-object(ArrayAccessReferenceProxy)#1 (3) {
+object(ArrayAccessReferenceProxy)#%d (3) {
[u"object":u"ArrayAccessReferenceProxy":private]=>
- object(Peoples)#2 (1) {
+ object(Peoples)#%d (1) {
[u"person"]=>
&array(1) {
[0]=>
--- /dev/null
+--TEST--
+default argument value in interface implementation
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+interface test {
+ public function bar();
+}
+
+class foo implements test {
+
+ public function bar($arg = 2) {
+ var_dump($arg);
+ }
+}
+
+$foo = new foo;
+$foo->bar();
+
+?>
+--EXPECT--
+int(2)
\ No newline at end of file
--- /dev/null
+--TEST--
+Method override allows optional default argument
+--SKIPIF--
+<?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
+--FILE--
+<?php
+
+class A {
+ function foo($arg1 = 1) {
+ }
+}
+
+class B extends A {
+ function foo($arg1 = 2, $arg2 = 3) {
+ var_dump($arg1);
+ var_dump($arg2);
+ }
+}
+
+class C extends A {
+ function foo() {
+ }
+}
+
+$b = new B();
+
+$b->foo(1);
+
+?>
+--EXPECTF--
+Fatal error: Declaration of C::foo() must be compatible with that of A::foo() in %s on line %d
--- /dev/null
+--TEST--
+Omitting optional arg in method inherited from abstract class
+--FILE--
+<?php
+
+abstract class A {
+ function foo($arg = 1) {}
+}
+
+class B extends A {
+ function foo() {
+ echo "foo\n";
+ }
+}
+
+$b = new B();
+$b->foo();
+
+?>
+--EXPECTF--
+Fatal error: Declaration of B::foo() must be compatible with that of A::foo() in %s on line %d