Что будет нового в PHP 8

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;
    }
}