Сегодня 400-й день агрессивной войны РФ против украинского народа. Армия РФ убивает мирных жителей Украины, разрушает гражданские объекты.

Наследование в PHP: классы, интерфейсы, трейты

При изучении объектно-ориентированного программирования на PHP иногда тяжело уловить различия между методами описания объектов. В чем принципиальное отличие абстрактного класса от интерфейса, в каких случаях использовать трейт.

В таблице сравниваются классы, абстрактные классы, финальные классы, интерфейсы и трейты. Объявление и создание объектов, наследование свойств и методов, передача типов.

PHP class abstract final interface trait
Объявление class SimpleClass {} abstract class AbstractClass {} final class FinalClass {} interface InterfaceName {} trait TraitName {}
Создание объектов $object = new SimpleClass(); $object = new FinalClass();
Наследование class HeirClass extends SimpleClass class HeirClass extends AbstractClass class HeirClass implements Interface {} class HeirClass
{ use TraitName; }
Множественное наследование class HeirClass implements Interface1, Interfacet2 {} class HeirClass
{ use Trait1, Trait2; }
Объявление свойств
Объявление свойств static
Объявление методов public
Объявление методов static
Объявление методов abstract абстрактный метод — абстрактный класс
Реализация методов
Передача типа наследникам