Оглавление

Подход ООП

Ниже приведен тот же пример, но реализованный в стиле ООП

 

<?php 
 
class Person 
{ 
    private $_name; 
    private $_job; 
    private $_age; 
 
    public function __construct($name, $job, $age) 
    { 
        $this->_name = $name; 
        $this->_job = $job; 
        $this->_age = $age; 
    } 
 
    public function changeJob($newjob) 
    { 
        $this->_job = $newjob; 
    } 
 
    public function happyBirthday() 
    { 
        ++$this->_age; 
    } 
} 
 
// Создать два новых объекта
$person1 = new Person("Tom", "Button-Pusher", 34); 
$person2 = new Person("John", "Lever Puller", 41); 
 
// Вывести их начальные состояния
echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>"; 
echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>"; 
 
// Повысить Тома в должности и учесть изменение возраста 
$person1->changeJob("Box-Mover"); 
$person1->happyBirthday();

// Джон лишь становится на год старше
$person2->happyBirthday(); 
 
// Вывести конечные результаты
echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>"; 
echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>"; 
 
?>  

На этот раз в браузере будет выведена следующая информация.

Person 1: Person Object
(
    [_name:Person:private] => Tom
    [_job:Person:private] => Button-Pusher
    [_age:Person:private] => 34
)
Person 2: Person Object
(
    [_name:Person:private] => John
    [_job:Person:private] => Lever Puller
    [_age:Person:private] => 41
)
Person 1: Person Object
(
    [_name:Person:private] => Tom
    [_job:Person:private] => Box-Mover
    [_age:Person:private] => 35
)
Person 2: Person Object
(
    [_name:Person:private] => John
    [_job:Person:private] => Lever Puller
    [_age:Person:private] => 42
)

 

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

 
Возможно, при небольшом программном коде это различие не особенно заметно, но как только приложение начнет расти в объеме, ООП, при правильной реализации, значительно снизит нагрузку на программиста.

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