Интерфейсы и абстрактные классы в PHP

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

Ключевое отличия:
  • интерфейс не может реализовывать логику приложения, он только описывает структуру класса
  • интерфейсов можно реализовывать столько, сколько нужно; класс может наследоваться только от одного класса
  • абстрактный класс невозможно инициализировать
  • абстрактный класс может содержать реализацию методов


Создание интерфейса: 
1
2
3
4
5
6
7
8
9
namespace Application\\\\Interfaces;
  
interface Fruit
{
    protected $name;
  
    function getName();
    function setName($name);
}
   Создание абстрактного класса:   
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace Application\\\\Classes;
  
class Fruit
{
    protected $name;
  
    function getName()
    {
        return $this->name;
    }
  
    abstract function setName($name);
}
   Реализация интерфейса:  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace Application\\\\Fruits;
  
class Apple implements Fruit
{
    protected $name;
  
    function getName()
    {
        return $this->name;
    }
  
    function setName($name)
    {
        $this->name = $name;
    }
}
Спасибо за внимание.
Если статья Вам показалась незаконченной или Вы знаете как её улучшить, пожалуйста сообщите мне e@gohtml.ru