- Output for 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- BaseNew fallback
<?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();