PHP 8 — следующая мажорная версия, примерная дата релиза конец 2020 года.
Итак, PHP 7.4 вышел и должен закончить эпохальную ветку седьмой версии. Столько много всего интересного было в ней реализовано, но разработчики PHP не стоят на месте и уже готовят 8 версию, которая будет содержать в себе много грандиозных вещей, о которых я и буду вас уведомлять по мере одобрения RFC или пулл-реквестов.
error_reporting = E_ALL — В PHP 8 по умолчанию уровень ошибок будет установлен в E_ALL вместо текущего: E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED.
Union Types 2.0
«Типы объединения» принимают значения нескольких разных типов, а не одного. PHP уже поддерживает два специальных типа объединения:
Type или null, используя специальный синтаксис «?Type»
array или Traversable, используя специальный тип iterable.
Однако произвольные типы объединений в настоящее время не поддерживаются языком. Вместо этого необходимо использовать аннотации phpdoc, например, в следующем примере:
class Number {
/**
* @var int|float $number
*/
private $number;
/**
* @param int|float $number
*/
public function setNumber($number) {
$this->number = $number;
}
/**
* @return int|float
*/
public function getNumber() {
return $this->number;
}
}
Типы объединения указываются с использованием синтаксиса T1|T2|… и могут использоваться во всех позициях, где типы в настоящее время принимаются:
class Number {
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}