Php - Абстрактные классы в PHP
Войти

Php - Абстрактные классы в PHP

Абстрактные классы в PHP

Основной смысл и назначение абстрактных классов заключается в расширении возможностей его дочерних классов.

Абстрактные классы в PHP отличаются от обычных тем, что нельзя создать их объекты(экземпляры). Абстрактные классы создаются для того, чтобы на их основе, используя наследование в PHP, создавать новые классы.


Как создать абстрактный php класс

Абстрактный класс определяется с помощью ключевого слова abstract. В абстрактном классе можно создавать свойства и методы, но попытка инициализировать объект этого класса приведёт к ошибке.

В любом абстрактном классе имеет смысл создать хоть один абстрактный метод. Абстрактный метод также описывается при помощи слова abstract. В отличии от обычного метода он не имеет тела, его объявление заканчиваеся точкой с запятой.

Давайте приедём пример абстрактного класса:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 

//Абстрактные классы в PHP

abstract class Dad
{
    public function 
SayHi() {
        return 
"Hi";
    }
    abstract public function 
SayHello();
}

class 
Son extends Dad
{
    public function 
SayHello() {
        return 
"Hello";
    }
}

$son = new Son;
echo 
$son->SayHello().' and '.$son->SayHi();

?>

В этом примере в абстрактном классе Dad есть два метода. Один будет унаследован, а второй метод абстрактный. Поэтому его дочерние классы обязаны реализовать абстрактный метод, иначе будет Fatal error.

Абстрактные классы в PHP используются при написании больших проектов, таких как фреймворки. Абстрактные классы упрощают работу команды программистов, позволяя гарантировать наличие требуемого функционала во всех классах, написание которых может быть поручено работникам с разных стран.

Итак, абстрактные классы используются как шаблоны, на их основе создаются классы с гарантированным набором методов. Причём, в абстрактных классах можно прописывать обычные и абстрактные методы.

Но в PHP есть и чистые шаблоны для классов, которые состоят только из опредения наборов методов. Речь идёт о интерфейсах в PHP.

Итоги:

  • Абстрактные классы нужно указывать явно с помощью ключевого слова abstract.
  • Абстрактный класс должен обязательно иметь минимум один абстрактный метод, который также задаётся ключевым словом abstract.
  • Абстрактные методы могут иметь модификатор доступа отличный от public.
  • В абстрактном классе методы могут содержать реализацию, в отличии от интерфейсов.



Ссылки по теме:

  1. komotoz.ru
  2. komotoz.ru - ООП для начинающих PHP. Абстрактные классы
Теги:
php