Единогласно принято предложение Никиты Попова о
валидации абстрактных методов трейтов.
Фатальная ошибка будет сгенерирована в следующих случаях:
- нарушение совместимости сигнатур (кол-во аргументов, контравариантность аргументов, ковариантность возвращаемого типа),
- несовпадение статичности методов.
Также данный RFC разрешает использовать
abstract private function
, но
только в трейтах, так как трейт имеет доступ к приватным методам использующего его класса. В PHP 7 такой код
генерирует фатальную ошибку.
Будьте внимательны, RFC, очевидно, нарушает обратную совместимость. Однако соблюдать сигнатуру при имплементации абстрактного метода вполне логично, поэтому скорее всего ваш код уже совместим с PHP 8 в этом аспекте.
@vudaltsov |
https://twitter.com/vudaltsov