Если вы просто ищете краткий код, вы можете сделать
class Test {
function __construct( \DateTimeZone $timezone_object = null ) {
$this->ts = $timezone_object ?? new DateTimeZone();
}
}
двойное число ??является проверкой if null.Таким образом, у вас есть тип подсказки, который будет позволять только значение DateTimeZone или Null в (так что это безопасно), затем вы просто назначаете новый экземпляр DateTimeZone, если аргумент был нулевым, в противном случае используйте переданное значение.
Правка: Найдена информация по умолчанию null для PHP 7.1 +
Невозможно передать нулевой аргумент при использовании подсказки типа
Так что код может быть еще более эзотерическим, с немного меньшими нажатиями клавиш
class Test {
function __construct( ?\DateTimeZone $timezone_object ) {
$this->ts = $timezone_object ?? new DateTimeZone();
}
}
Но, на мой взгляд, это просто ужасно.