Объектно Ориентированный PHP (ООП)

Рано или поздно программист начинает задумываться о ООП, чтобы самостоятельно разбираться в нем. На то у него свои причины, быть может потому что все популярные движки написаны на ООП, или только тот, с которым ему предстоит работать, возможно просто расширить свои знания в области программировании или что то еще. В ООП не больше возможностей, чем в процедурном, в смысле все что можно сделать на ООП, то можно и в процедурном, однако в ООП есть свои преимущества. Большая часть программистов отдает свое предпочтение именно ООП.

Чтобы начать писать на ООП, надо "познакомиться" с такими "вещами", как класс, объект и метод. Сейчас попытаюсь объяснить, что это значит:
  • Класс - Определяет функции и типы данных, что находятся в объектах классах.
  • Объект - Своего рода переменная, которая содержит в себе данные и функции. Такая переменная создается через класс.
  • Методы - Функция, созданная в классе и используемые для объектов этого класса.


Как создать класс
Пример, как создать класс. Назовем наш класс common:
class common
{
    # Содержимое класса
}


Как создавать объект
После того, как у нас будет готовый класс, мы можем приступать к работе с этим классом, для этого нам нужно создать объект, делается это при помощи оператора new, вот так:
$common = new common();

Теперь переменная $common и есть объект.

Двигаемся дальше. Давайте создадим класс common, с функцией addition, которая будет складывать два числа, затем создадим объект и при помощи этого объекта обратимся к методу. И так, сам класс с методом addition (с областью видимостью public (об этом чуть позже)):
class common
{
    public function addition($a, $b)
    {
        return $a + $b;
    }
}

Создаем объект и обращаемся к методу:
$common = new common();            # Создаем объект
$result = $common->addition(7, 2); # Обращаемся к методу addition

Теперь переменная $result содержит результат сложения двух чисел, в данном примере - 9.

Теперь поговорим о области видимости свойств и методов класса, которая устанавливается при помощи ключевых слов public, protected и private. Данные слова отвечают за то от куда можно будет обратиться к свойству или методу. И так:
  • public - Доступно ото всюду. Обратиться можно внутри и за пределами класса.
  • protected - Доступно внутри класса и в дочерних классах.
  • private - Доступно только внутри класса.


Двигаемся дальше. Внутри классов обращаться к свойству класса, надо начиная с оператора: $this, знак доллара у свойства не ставиться. Пример:
$this->variable;

Обращаться к методу класса, так же надо с оператором $this:
$this->addition(7, 2);

Один класс может наследовать другой класс, то есть вызывая один класс, мы можем работать с двумя делается это при помощи ключевого слова extends, после названия класса, пишем название наследуемого класса, вот так:
class second extends first

Чтобы стало более понятно, что такое наследование, приведу ещё пример с двумя классами:
class first
{
    public $value = 'DANFA';

    public function test()
    {
        echo $this->value;
    }
}

class second extends first
{
    # Содержимое класса
}

$class = new second();
$class->test();

Из кода видно, что вызван класс с именем second, а значение переменной выводим из класса с именем first, так как мы наследовали класс.