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

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

Поделиться в соц. сетях

mailru Неоправданное использование ООП
facebook Неоправданное использование ООП
odnoklassniki Неоправданное использование ООП
livejournal Неоправданное использование ООП
googlebuzz Неоправданное использование ООП

Также рекомендуем:

  1. Google AdSense расширил способы вывода средств С сегодняшнего дня российские пользователи сервиса Google AdSense, зарегистрированные как физические лица, получили возможность выводить заработанное вознаграждение на банковский счет или электронный кошелек. Напомним, что ранее для вывода вознаграждения можно было воспользоваться только почтовым переводом.. Для того чтобы получить возможность выводить вознаграждение от AdSense на свой банковский счет или электронный кошелек, пользователю нужно будет зарегистрироваться [...]...
  2. API-спецификация баз данных языка Python, версия 2.0 Интерфейс модуля Доступ к базе данных реализуется с помощью объектов соединения (connection objects). Модуль должен предоставлять для них следующий конструктор:. connect(параметры…)Конструктор для создания соединения с базой данных. Возвращает Объект соединения. Имеет ряд параметров, которые зависят от базы данных. [1] Должны быть определены следующие глобальные переменные модуля: apilevelСтроковая константа, обозначающая поддерживаемый уровень DB API. В настоящее [...]...
  3. Оптимизация Apache + PHP + PostgreSQL После ввода в строй динамического веб-сервера на базе apach + php + postgresql (да и на базе других систем тоже, если честно), вебмастер часто обнаруживает, что производительность системы начинает с большей или меньшей активностью стремиться к нулю, порой его достигая при наплывах посетителей. Стандартными действиями вебмастера при этом являются лихорадочное чтение документации, поиск в Интернете [...]...
  4. Второй раз повторяю: я человек! CAPTCHA 1. Краткий обзор Интернет-роботы или как их чаще называют боты, это программы созданные для автоматизированного выполнения некоторых функций в сети. В зависимости от их предназначения, цель работы таких программ тоже разная. Но объединяет роботов одно – избавить человека от выполнения однообразной рутинной работы. Казалось бы, в этом нет ничего зазорного. Бизнесмен, получающий на электронную почту [...]...
  5. 10 способов превратить трафик сайта в живые деньги Вне всякого сомнения, Рунет переполнен статьями, сайтами, блогами и форумами, посвященными общей теме «Как заработать в Интернет». И вы вполне правы, задавая себе вопрос – зачем писать еще одну статью на эту тему?. Все очень просто. Во-первых, половина сайтов по заработку в Интернет созданы «пионерами» для таких же «пионеров» и рассчитаны на максимальную прибыль в [...]...
  6. Сайт от идеи до реализации Многие из этих вопросов неизбежно возникают у компаний или частных лиц (далее клиентов), заинтересованных в создании сайта.. В этой статье мы попытаемся рассмотреть этапы, которые, на наш взгляд, преодолевает клиент на пути от принятия решения о создании сайта до оценки результатов его реализации. Мы выделяем пять основных этапов этого пути (рис. 1): Рис. 1. Основные [...]...
  7. Не цепляйтесь за запросы! 2 подхода к продвижению сайтов: «только по запросам», «общее увеличение трафика» Очень часто, когда новый клиент приходит заказывать услуги по оптимизации сайтов, от него слышна фраза:«интересует вывод на первые позиции по запросам».Далее он перечисляет несколько наиболее важных, по его мнению, запросов. Как правило, такого клиента больше ничего не интересует, он цепляется за эти запросы и [...]...
  8. Раскручиваем url Каким образом Вы осуществляете раскрутку своего сайта?. В течение последних двух месяцев я пытался ответить на этот вопрос относительно около 100 торговых марок, анализируя их рекламные и промоушинговые материалы. Вряд ли следует говорить о том, что мне не удалось прочитать абсолютно все публикации, принадлежащие перу сотрудников этих фирм. Тем не менее, я увидел достаточно, чтобы [...]...
  9. Статистика сайта – ответы на вопросы и не только… Статистика веб-сайта родилась из вопросов. Все начинается с этого.. Интересно, как увеличить продажи? Совсем коротко о главном. Человек сидит за компьютером и с помощью браузера просматривает веб-сайт. Сайт состоит из файлов. Интересно, какие файлы просматривают чаще? И кто их просматривает? Чуть подробнее о предмете. Веб-сайт состоит из совокупности файлов – гипертекстовых документов, картинок оформления, данных. [...]...
  10. Что такое блог? Блог – это сайт, на котором находятся личные заметки автора. В основном, заметками являются ссылки на сайты, которые кажутся владельцу ресурса наиболее интересными, и комментарии к ним. Одни владельцы блогов дают небольшие комментарии на приведенные ссылки, другие же пытаются подробно описать сайт. Это могут быть не только ссылки, но и просто дневник с записями, начиная [...]...
  11. Расчет рентабельности поискового продвижения Статья предназначена для владельцев сайтов, директоров/менеджеров по маркетингу и других лиц, ответственных за продвижение товаров и услуг.В этой статье я применил принцип «от обратного». То есть, когда приходит «стандартное» коммерческое предложение на продвижение сайта и уже начинают обговариваться цены на продвижение, то есть возможность подсчитать «стоит ли овчинка выделки».. Итак, Вам приходит коммерческое предложение с [...]...
  12. Проверка хостинг провайдера Начнем с того, что обязательно должно быть учтено при составлении хостинг пакета (с учетом интереса клиента) или, проще говоря, что обязательно включено в каждом действительно качественном хостинг провайдере:. Технические характеристики сервера и его канал подключения должны соответствовать реальности. Обязательно указывать количество и тип проектов, размещенных на одном сервере, поскольку тогда будет приблизительно видно клиенту его [...]...
  13. Ruby on Rails vs. PHP stats Интересную статистику выложили недавно на phpinside.ru под душераздирающим заголовком “PHP съест Ruby on Rails на завтрак.” Только вот выводы из неё сделали несколько странные. Я же выводов делать не буду, а просто покажу два графика. Любой с каплей здравого смысла в голове, сам сделает вывод.....
  14. Владимир Липка: веб-дизайн Все очень просто. Хороший веб-дизайн – это когда сайт не вызывает вопросов. Если на сайте невозможно отыскать нужную информацию, не ясна цель создания сайта, а внешний вид раздражает – это плохой веб-дизайн.. Дизайн – не искусство Задача искусства не давать ответы, его задача, скорее, в обратном – ставить вопросы. В отличие от искусства – дизайн [...]...
  15. Бизнес на подкастах – уже реальность О подкастинге, как об очень важном явлении в online-маркетинге, сейчас оченьчасто говорят, потому что подкастинг – это маленький, зато очень мощныйбизнес-инструмент. Несмотря на это, большинство людей не уделяют емудолжного внимания, т. к. этот термин звучит уж как-то очень технично дляобычных людей.. В этой статье я попытаюсь немного пролить свет на эту технологию. Давайтеначнём с того, [...]...

Комментарии запрещены.