3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php namespace Traverse\Test { interface MyTypeInterface { function getPropertyA(); function getPropertyB(); } class MyType implements MyTypeInterface { private $_propertyA; private $_propertyB; final public function getPropertyA() { return $this->_propertyA; } final public function getPropertyB() { return $this->_propertyB; } final private function setPropertyA($propertyA) { // $propertyA assertions $this->_propertyA = $propertyA; } final private function setPropertyB($propertyB) { // $propertyB assertions $this->_propertyB = $propertyB; } public function __construct(MyTypeInterface $myType) { $this->setPropertyA($myType->getPropertyA()); $this->setPropertyB($myType->getPropertyB()); } } class MyTypeBuilder implements MyTypeInterface { private $_propertyA; private $_propertyB; public function getPropertyA() { return $this->_propertyA; } public function setPropertyA($propertyA) { $this->_propertyA = $propertyA; } public function getPropertyB() { return $this->_propertyB; } public function setPropertyB($propertyB) { $this->_propertyB = $propertyB; } } $myTypeBuilder = new MyTypeBuilder(); $myTypeBuilder->setPropertyA('foo'); $myTypeBuilder->setPropertyB('bar'); $myType = new MyType($myTypeBuilder); var_dump($myTypeBuilder, $myType); /* object(Traverse\Test\MyTypeBuilder)#1 (2) { ["_propertyA":"Traverse\Test\MyTypeBuilder":private]=> string(3) "foo" ["_propertyB":"Traverse\Test\MyTypeBuilder":private]=> string(3) "bar" } object(Traverse\Test\MyType)#2 (2) { ["_propertyA":"Traverse\Test\MyType":private]=> string(3) "foo" ["_propertyB":"Traverse\Test\MyType":private]=> string(3) "bar" } */ }
Output for 5.3.0 - 5.6.28, hhvm-3.10.0 - 3.12.0, 7.0.0 - 7.1.0
object(Traverse\Test\MyTypeBuilder)#1 (2) { ["_propertyA":"Traverse\Test\MyTypeBuilder":private]=> string(3) "foo" ["_propertyB":"Traverse\Test\MyTypeBuilder":private]=> string(3) "bar" } object(Traverse\Test\MyType)#2 (2) { ["_propertyA":"Traverse\Test\MyType":private]=> string(3) "foo" ["_propertyB":"Traverse\Test\MyType":private]=> string(3) "bar" }
Output for 4.4.2 - 4.4.9, 5.1.0 - 5.2.17
Parse error: syntax error, unexpected T_STRING in /in/Qe8d7 on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1, 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_STRING in /in/Qe8d7 on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/Qe8d7 on line 3
Process exited with code 255.