<?php
class A {}
class B {}
class C {}
class D {}
class Z {
public function __construct(
protected A $a,
protected C|B $c,
protected D|C $d,
protected ?D $unused = NULL,
) {
if ($this->c instanceof B) {
trigger_error('A, B, C, D is deprecated, pass A, C, D instead', E_USER_DEPRECATED);
$this->c = $d;
$this->d = $unused;
}
var_dump($this->a);
var_dump($this->c);
var_dump($this->d);
}
}
new Z(new A(), new B(), new C(), new D());
new Z(new A(), new C(), new D());