3v4l.org

run code in 300+ PHP versions simultaneously
<?php class SomeService { public string $something; } // before, in 10.1 class BaseOld { protected SomeService $test; public function __construct(?SomeService $test = NULL) { if ($test === NULL) { $test = new SomeService(); $test->something = 'fallback'; } $this->test = $test; } public function printTest(): void { print __CLASS__ . "\t" . $this->test->something . "\n"; } } // after class BaseNew { private SomeService $test; public function __construct(?SomeService $test = NULL) { if ($test === NULL) { $test = new SomeService(); $test->something = 'fallback'; } $this->test = $test; } public function printTest(): void { print __CLASS__ . "\t" . $this->test->something . "\n"; } } //NOTE: IDENTICAL! // class FooOld extends BaseOld { // protected $test; // public function __construct() { // parent::__construct(); // $this->test = new SomeService(); // $this->test->something = 'subclass'; // } // } class FooNew extends BaseNew { protected $test; public function __construct() { parent::__construct(); $this->test = new SomeService(); $this->test->something = 'subclass'; } } // $f = new FooOld(); // $f->printTest(); $f = new FooNew(); $f->printTest();
Output for git.master_jit, git.master, rfc.property-hooks
BaseNew fallback

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:
27.77 ms | 405 KiB | 5 Q