Ответ
Нет, PHP не поддерживает множественное наследование классов (когда один класс наследуется от нескольких родителей). Это решение было принято для избежания «проблемы ромба» (diamond problem), когда возникает неоднозначность, какой метод родителя вызывать, если они имеют одинаковые имена.
Вместо этого PHP предлагает две основные альтернативы:
-
Интерфейсы (Interfaces): Класс может реализовывать множество интерфейсов, определяя контракты, которые он должен выполнить.
interface Loggable { public function log(string $message): void; } interface Cacheable { public function cache(int $ttl): void; } class DataProcessor implements Loggable, Cacheable { public function log(string $message): void { /* ... */ } public function cache(int $ttl): void { /* ... */ } } -
Трейты (Traits): Это механизм повторного использования кода. Класс может «включать» в себя несколько трейтов, получая их методы и свойства.
trait LoggerTrait { public function log(string $msg) { echo $msg; } } trait ValidatorTrait { public function validate(array $data) { /* ... */ } } class UserService { use LoggerTrait, ValidatorTrait; // Теперь класс имеет методы log() и validate() }Комбинация интерфейсов и трейтов покрывает большинство сценариев, где в других языках могло бы использоваться множественное наследование.