ООП в PHP(часть 1)

Рассмотрим базовые определения и понятия в ООП.
Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Инкапсуляция – механизм, который позволяет объединять данные и обрабатывать их в коде как одно целое.
Полиморфизм – позволяет использовать одни и те же имена для похожих, но технически разных задач.
Наследование – свойство, позволяющее одному объекту приобретать свойства другого объекта.
Класс – одно из базовых понятий ООП, образующие его базу, является своеобразным типом данных.
Описание класса в PHP начинаются служебным словом class:

Class Nameofclass{
// Описание класса, методов для обработки
}

Для того, чтобы добавить объект нужно использовать оператор new:
Object = new Nameofclass;
Рассмотрим описание класса, создание объектов и доступ к ним(для этого в php есть оператор ->):
<?php
// Создадим класс Name_expl:
class Name_expl {
// задаем данные:
var $name;
 
// задаем метод:
 function Getname() {
 echo "<h3>It's name of smbdy</h3>";
 }
 
}
 
// Создадим объект класса Name_expl:
$obj = new Name_expl;
// Получим доступ к членам класса:
$obj->name = "Smbdy name";
echo $obj->name; // Выводит 'Smbdy name'
// А теперь получим доступ к методу класса:
$obj->Getname();
// Выводит 'It's name of smbdy' заглавными буквами
?>

Получим:

Если появляется необходимость получить доступ к членам класса внутри класса, нужно использовать указатель $this, который всегда относится к текущему объекту. Изменим наш метод Getname():
function Getname() {
echo $this->name;
}

Также можно написать метод Changingname():
function Changingname($name) {
$this->name = $name;
}

Его можно использовать как:
$obj->Changingname("New name"); 
$obj->Getname();

Полный листинг:
<?php
class  Name_expl {
var $name;
// методы:
 function Getname() {
 echo $this->name;
 }
 
 function Changingname($name) {
 $this->name = $name;
 }
 
}
// Создаем объект класса Name_expl:
$obj = new Name_expl;
// Теперь для изменения имени используем метод Changingname():
$obj->Changingname("New name");
// А для доступа, как и прежде, Getname():
$obj->Getname();
// Сценарий выводит 'New name'
?>

Конструктор – метод, задающий значения некоторых свойства(может вызывать другие методы). Вызываются автоматически, если создается новый объект, чтобы это было реализовано, имя метода-конструктора должно совпадать с именем класса, который его содержит. Пример:
<?
class bgcol {
var $bgcolor;
 function bgcol($color) {
 $this->bgcolor = $color;
 }
}
 
// Вызвать конструктор класса bgcol
$page = new bgcol("black");
?>

В примере, который был представлен выше объекты класса bgcol могут быть созданы двумя способами:
$page = new bgcol;
$page = new bgcol("black");
Первый просто вызывает конструктор, создающий просто объект, но не инициализирующий его свойства, а во втором случае объекту класса bgcolr присваивается значения его свойству bgcolor.
Деструктор - специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).
Хоть в PHP и отсутствует непосредственная поддержка деструкторов, но можно смоделировать их работу, вызвав функцию unset(). Эта функция убирает содержимое переменной и возвращает ресурсы, которые она занимала системе. Пример на нашем объекте:
unset($bgcol);
Так же существует возможность удалить объект с помощью destroy():
$bgcol->destroy();