Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Неоправданное использование ООП

Источник: realcoding.net

Парадигма ООП - замечательный подход к написанию кода. У ООП есть множество неоспоримых преимуществ, самое значительное из которых - возможность использовать заново уже некогда написанный код. Однако все мы рано или поздно осознаём тот факт, что PHP - не объектно-ориентированный язык.

Несмотря на то, что PHP имеет корректно работающую поддержку объектов, использовать объекты там, где можно без них обойтись - недальновидно и неэффективно. Причина? Дело в том, что поддержка парадигмы ООП в PHP реализована не в полном объёме.

Несмотря на присутствие основных элементов, PHP всё-таки не хватает многих продвинутых функций (как защищённые члены или закрытые переменные), которые обязательны для настоящих объектно-ориентированных языков (например, Java, C++).

Кроме того, поддержка объектов в PHP недостаточно отработана и не очень эффективна. Это означает, что использование парадигмы ООП может существенно снизить скорость выполнения программы.

Примечание: Другими словами, скрипт, работающий на объектах будет исполняться медленнее, как код внутри eval() по сравнению с обычным кодом. Для более наглядных примеров, где использование ООП принимает какие-то уродливые формы, пришлось бы прибегнуть к продвинутым функциям концепциям PHP, некоторые из которых даже незадокументированы. Так что остановимся на этом.

А что же мы сможем без ООП?


Если вы пришли в PHP из Java или C++, где без объектов трудно создать что-либо более или менее серьёзное, то и в PHP вам будет трудно обходиться без них. Но будьте уверены, что серьёзные приложения могут быть написаны и методик и приёмов ООП (PHP был написан на C, а последний, как мы знаем, не поддерживает объектов).

Итак, для тех, кто не привык обходиться без ООП, приведём альтернативные технологии написания связных и расширяемых приложений вне парадигмы ООП:
Создание API.
Разработка концепции именования (и работа в её рамках).
Группирование взаимосвязанных функций в один файл.

Создание API


Соотнесём код программы с тремя уровнями:
Первый - собственно рабочие функции.
Второй - API функции. Сюда входят функции для построения конкретного приложения.
Третий - само приложение:

<?php
// MortgageRate.php (Ипотечный Кредит)

// Уровень первый - внутренние функции
// Внутренние функции для расчёта оптимальной  процентной ставки исходя из времени и размера помесячных выплат

function _mort_find_interest_rate ($total) {
    if (
$total < 30000)
        return (
7.4);
    elseif (
$total > 30000)
        return (
3.2);
    elseif (
$total > 50000)
        return (
2.5);
    else
        return (
1.7);
}

// Уровень второй - API функции

// double calculate_mortgage_rate (int money, int time, int month)
// Рассчитывает процентную ставку исходя из суммы займа, времени погашения и интервала выплат

function calculate_mortgage_rate ($money, $time, $month) {
   
$rate = _mort_find_interest_rate ($money) / 100;
   
$money /= ($time / $month);
    return (
$rate * $money) + $money;
}

?>

<?php
// CalcMortgage.php

// Третий уровень - приложение
// $money, $time и $period получаем  из формы

include_once MortgageRate.php;

$price = calculate_mortgage_rate ($money, $time, $period);

print
Ваша процентная ставка за $period составляет $price;
?>

Разработка концепции именования и работа в её рамках.


Один из самых неприятных моментов при разработке больших приложений - это конфликты пространства имён. Классы его сегментируют. Таким образом, разные классы могут:
иметь свойства с одинаковыми именами или
содержать в себе методы с одинаковыми именами.
Например, класс Phillips и класс Normal могут одновременно содержать метод с именем screwdriver.

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

Группирование взаимосвязанных функций в один файл


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

Например, можно было бы все функции, связанные с общением с БД, собрать в файл DB.php.

ООП, как и всё на свете, хорошо в меру


Небольшая оговорка: эта глава была написана не для того, чтобы отговорить вас от использования ООП вообще. Скорее, это была попытка убедить вас не работать с PHP в режиме Java или C++, где ООП - решение номер один.

Проведите тщательный анализ всех выгод и потерь, прежде чем применить объектный подход в PHP.



Похожие статьи:
- Заголовок If-Modified-Since, если PHP не установлен как моду
- Что такое PageRank Googleа и как получить его по максимуму
- Аутентификация пользователей через Веб-интерфейс
- PHP поддерживает реализацию механизма отправки заголовков HTTP.
- Работаем с файлами на PHP
- Простой способ кеширования страниц
- Кристальные горы, спецэффект
- Как нарисовать резьбу.


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]