Главная » Полезные статьи » Язык PHP » Неоправданное использование ООП
Распечатать статью

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

Парадигма ООП — замечательный подход к написанию кода. У ООП есть множество неоспоримых преимуществ, самое значительное из которых — возможность использовать заново уже некогда написанный код. Однако все мы рано или поздно осознаём тот факт, что ‘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.

Источник: internet-technologies.ru

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

Оставить комментарий

Похожие статьи