Оглавление

Процедурный подход

Ниже приведен код для нашего примера, написанный с использованием процедурного подхода.

 

<?php 
 
function changeJob($person, $newjob) 
{ 
    $person['job'] = $newjob; // Изменить профессию 
    return $person; 
} 
 
function happyBirthday($person) 
{ 
    ++$person['age']; // Прибавить 1 к возрасту
    return $person; 
} 
 
$person1 = array( 
    'name' => 'Tom', 
    'job' => 'Button-Pusher', 
    'age' => 34 
); 
 
$person2 = array( 
    'name' => 'John', 
    'job' => 'Lever-Puller', 
    'age' => 41 
); 
 
// Вывести начальные значения характеристик
echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>"; 
echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>"; 
 
// Том получил повышение, и у него был день рождения 
$person1 = changeJob($person1, 'Box-Mover'); 
$person1 = happyBirthday($person1); 
 
// У Джона был только день рождения 
$person2 = happyBirthday($person2); 
// Вывести новые значения характеристик
echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>"; 
echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>"; 
 
?> 

Выполнив этот код, вы получите следующие результаты.

 

Person 1: Array
(
    [name] => Tom
    [job] => Button-Pusher
    [age] => 34
)
Person 2: Array
(
    [name] => John
    [job] => Lever-Puller
    [age] => 41
)
Person 1: Array
(
    [name] => Tom
    [job] => Box-Mover
    [age] => 35
)
Person 2: Array
(
    [name] => John
    [job] => Lever-Puller
    [age] => 42
)

 

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

 

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

 

Для обеспечения именно такого структурирования кода и предназначено ООП.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити