3v4l.org

run code in 300+ PHP versions simultaneously
<?phpabstract class parentTest{ protected $innerVar = ''; public function __construct() { if(empty($this->innerVar)){ echo 'too soon'; throw(new Exception('too soon')); } }}abstract class childTest extends parentTest{ protected $outerVar = ''; public function __construct() { if(empty($this->innerVar) || empty($this->outerVar)){ echo 'too soon'; throw(new Exception('too soon')); } }}class implTest extends parentTest{ protected $innerVar = 'hi';}class implChildTest extends childTest{ protected $innerVar = 'hi'; protected $outerVar = 'hello there';}new implTest();new implChildTest();<?php abstract class parentTest{ protected $innerVar;}class implTest{ protected $innerVar = 'hi'; public function __construct() { if(empty($this->innerVar)){ throw(new Exception('too soon')); } }}new implTest();
Output for git.master, git.master_jit, rfc.property-hooks
<?phpabstract class parentTest{ protected $innerVar = ''; public function __construct() { if(empty($this->innerVar)){ echo 'too soon'; throw(new Exception('too soon')); } }}abstract class childTest extends parentTest{ protected $outerVar = ''; public function __construct() { if(empty($this->innerVar) || empty($this->outerVar)){ echo 'too soon'; throw(new Exception('too soon')); } }}class implTest extends parentTest{ protected $innerVar = 'hi';}class implChildTest extends childTest{ protected $innerVar = 'hi'; protected $outerVar = 'hello there';}new implTest();new implChildTest();

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
47.94 ms | 402 KiB | 8 Q