расставляй правильно приоритеты и не отвлекайся на мелочи

10 принципов PHP специалистов

Вольный перевод:
10 Principles of the PHP Masters
Автор: Glen Stansberry

Примечание: Я поддерживаю мнение большинства пунктов данной статьи и надеюсь кто-то из Вас почерпнет что-то новое из данных советов или ссылок.

С повсеместным распространением PHP, становится все проще найти скрипт или кусок PHP кода полностью удовлетворяющий нашим потребностям. К сожалению, при таком ракладе, теряется критерий того, что-же в таком случае представляет из себя хорошая техника написания PHP скрипта. Нам необходимы достоверные источники, подтверждающие то, что они написаны с использованием лучших практик в PHP.

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

1. Используйте PHP только тогда, когда он Вам действительно необходим — Rasmus Lerdorf

Нет более лучшего источника знаний о том, на что способен PHP, чем знания от самого создателя PHP. Rasmus Lerdorf создал PHP в 1995 и с того времени этот язык распространился со сверхъестественной быстротой в сообществе разработчиков изменяя лицо Интернет. Однако, Расмус не создавал PHP с такими намерениями. PHP был создан из необходимости решать проблемы веб строительства.

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

Однако, вы не можете использовать PHP везде. Lerdorf один из первых признает, что PHP лишь инструмент в Вашем арсенале, который имеет определенные ограничения.

Используйте для работы правильный инструмент. Я встречал компании, которые полностью работают на PHP, разворачивая его повсюду, но это не означает, что он панацея от любой проблемы. В большенстве случаев это входной (front-end) скриптовый язык для веб.

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

2. Для расширяемости используйте множество таблиц с PHP и MySQL — Matt Mullenweg

Никто не сомневается за авторитет Matt Mullenweg в PHP. Он разработал самую популярную систему блоггинга на планете: WordPress. После разработки WordPress, Matt и компания запустили знаменитый WordPress.com, бесплатный сайт для блоггинга работающий на базе WordPress MU — продукта для ведения мультиблогов. На момент написания этой статьи WordPress.com ведет 4 миллиона блогов и их пользователи написали сегодня свыше 140,000 статей.

Если кто и знает как расширять веб сайт, так это Matt Mullenweg. В 2006 Matt, комментируя структуру баз данных для WordPress, объяснял, почему WordPress MU использует отдельные таблицы для каждого блога, вместо использования одной гигантской монолитной таблицы для всех.

Мы тестировали это на MU и выяснили то, что в определенный момент расширение становится слишком затратным. С монолитной структурой Вы упираетесь в возможности железа. В MU пользователи спокойно могут быть разделены на части, для примера на WordPress.com мы разделили пользователей на 4096 баз данных, которые позволяют выполнять расширение очень дешево и эффективно для сотен тысяч и даже миллионов пользователей с большим уровнем траффика.

Возможность миграции таблиц позволяет исполнять код, а в конечном счете и блоги, быстрее и выполнять легкую расширяемость. Совместно с кешированием и грамотным использованием баз данных, Matt показывает, что сверх популярные сайты, такие как Facebook и WordPress.com могут «крутиться» на PHP и справляться с высоким траффиком.

3. Никогда не доверяйте своим пользователям — Dave Child

Dave Child изобретатель недавно переименованного Added Bytes (в недавности ilovejackdaniels.com) веб сайта, который представлял превосходные шпаргалки для многих языков программирования. Дейв работал на многие компании в Англии и заработал себе авторитет в мире программистов.

Дейв предлагает принять некоторый разумный совет: Не доверяйте своим пользователям. Они просто могут навредить.

Итак, координальное правило веб разработки и я не могу его выразить более достаточно чем: Никогда не доверяйте своим пользователям. Примите то, что каждая порция данных от конечных пользователей, которую принимает Ваш сайт, содержит вредоносный код. Всегда. Даже включая данные, которые были проверены на клиентской стороне с использованием JavaScript. Если Вы можете управлять этим, — это хороший задел. Если PHP безопасность важна для Вас, это важно знать.

Дейв дает специфические примеры безопасности в первой части, второй и третьей, своей серии ‘Пишем безопасный PHP’ (Writing Secure PHP). Но его окончательный вывод следующий:

В итоге, будьте полным и безогворочным параноиком. Если Вы полагаете, что Ваш сайт никогда не будет подвергнут атакам или изменениям или каким-либо другим проблемам, тогда в конечном счете что-то пойдет не так и Вы «заработаете» себе массу проблем. Если, с другой стороны, Вы будете полагать, что каждый пользователь приводит Вас в состояние полной боеготовности, Вы поможете сохранить Ваш сайт в безопасности и будете готовы к тому, что где-то и что-то может пойти не так.

4. Вкладывайтесь в PHP кеширование — Ben Balbo

Ben Balbo писал для Site Point, очень уважаемого разработчиками и дизайнерами сайта. Он состоит в рабочей группе Melbourne PHP User Group и Open Source Developers’ Club, поэтому он знает некоторые вещи о языке. Это не секрет что являясь PHP разработчиком и тренером, Бен рекомендует уделять немного большее внимание PHP кешированию.

Если у Вас есть нагруженый статический веб сайт, такой как блог, управляемый через CMS, это потребует небольшого вмешательства, при ощутимом увеличении производительности и малом инвестировании времени. Установка кеширования для более комплексных сайтов, содержимое которых составляется на основе пользовательского контента, такие как порталы или системы виртуальных покупок, не будет столь ощутима, но все-таки изменения будут заметны.

Существует множество различных техник кеширования PHP и Бен касается несколько значимых из них:

  • кешируемые вызовы функций
  • выставление даты истечения заголовков
  • кеширования закачиваемых файлов в IE
  • шаблонное кеширование
  • Cache_Lite

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

5. Увеличьте производительность PHP разработки с помощью IDE, Шаблонов и Сниппетов — Chad Kieffer

Когда Chad Kieffer не занят пользовательскими интерфейсами и администрированием баз данных, он дает отличные советы в своем блоге 2 tablespoons. Так как Chad эксперт широкого профиля, он довольно часто имеет возможность из-за деревьев разглядеть лес, чего другие программисты не могут сделать, и в особенности такой целостный подход проявлятся в случае, когда Chad берется за разработку веб сайта. Он специализируется на всех аспектах процесса разработки, и поэтому может вносить в проект любые «озарения» улучшая конечный результат.

Chad верит, что использование IDE, такое как Eclipse PDT (Eclipse’s PHP пакет разработчика) с применением шаблонов и сниппетов может реально ускорить рабочий цикл проекта.

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

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

Используя IDE, такой как Eclipse и пакет PDT, Вы увидите увеличение скорости разработки. IDE на автомате добавляет необходимые скобки, отсутствующие точки с запятой и даже позволяет выполнять отладку непосредственно в редакторе без необходимости загрузки на сервер. (У Чеда есть отличное руководство getting started with Eclipse PDT о пользе разработки в IDE среде, если это Вас интересует)

6. Используйте с пользой функции PHP фильтров — Joey Sochacki

Пока Joey Sochacki может быть не так знаменит в PHP сообществе как Matt Mullenweg, он бывалый веб разработчик, который делится своими советами в личном блоге Devolio.

Joey подчеркивает, что несмотря на великое множество мест, где используется фильтрация данных, при написании PHP кода, не все программисты пользуются встроенными функциями фильтрации PHP.

Фильтрация данных. Мы все ее делаем. Большинству, если и не всем из нас, не очень-то нравится это занятие. Однако, такое положение дел обусловлено слабым знанием возможностей функций PHP filter_*, которые позволяют нам выполнять все разнообразие фильтрации и валидации. Используя их, мы можем проверять и обрабатывать различные типы данных, URL’ы, e-mail адреса, IP адреса, обрезать недопустимые символы, и так далее, и делать все это относительно просто.

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

7. Используйте PHP Framework — Josh Sharp

Всегда будут иметь место дебаты о том, какой PHP фреймворк использовать Zend, CakePHP, Code Igniter, или какой нибудь другой фреймворк и стоит ли это делать. В каждом из них есть свои слабые и сильные стороны и многие разработчики остаются при своем мнении о каждом из них и необходимости их использования.

Josh Sharp — веб разрабочик, зарабатывает себе на хлеб с маслом созданием клиентских веб сайтов. Это должно служить поводом к тому, чтобы доверять ему, когда он говорит, что использование PHP фреймворка это хорошая идея, сберегающая Ваше время и уменьшающая ошибки в программировании. Почему? Josh верит в это, потому что PHP слишком легок для изучения.

PHP также легко использовать, как и делать в нем ошибки. Из-за меньших ограничений в структуре кода намного проще написать некорректный код. Но решение есть: использовать фреймворк.

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

8. Не используйте PHP Framework — Rasmus Lerdorf

В противовес Josh’у, полагающему, что каждый должен использовать PHP фреймворк, Rasmus Lerdorf, крестный отец PHP, верит в то, что фреймворки не настолько хороши. Почему? Потому что они работают намного медленнее чем простой PHP код.

Во время презентации Rasmus’а на Drupalcon 2008, он сравнивал время работы PHP страницы с простым примером по выводу фразы «Hello World» с различными PHP фреймворками (слайды 24-32), и показал, что фреймворки намного медленнее, чем прямое PHP кодирование.

Вы можете прослушать и посмотреть презентацию польностью, где Rasmus продемонстрировал потерю производительности в PHP фреймворках. Если говорить короче, Rasmus показал, что производительность это основной отстающий фактор при использовании PHP фреймворка по сравнению с чистым PHP.

[Примечание: Если Вы используете PHP фреймворк, Rasmus предпочитает Code Igniter, несмотря на то, что это «наименее почитаемый фреймворк»]

9. Используйте пакетную обработку — Jack D. Herrington

Jack Herrington несторонний человек в мире PHP разработки. Являясь автором более 30-ти хитовых статей в престижной IBM developerWorks, Jack так-же публиковал книги о программировании PHP Hacks. Jack это истинный эксперт.

Herrington рекомендует использовать пакетную обработку и cron оснащяя ею задачи, выполнение которых возможно в фоновом (вспомогательном) режиме. Веб пользователи не будут ждать слишком медленного ответа от веб. Некоторые виды работ, которые требуют больших временных затрат, могут быть выполнены позже — в фоновом режиме, параллельно основному — быстрому.

Конечно, в некоторых случаях, намного проще свалить обработку мелких задач на мультипотоковый обработчик. Но обратите внимание, с простым использованием обычных инструментов — cron, MySQL, стандартный объектно-ориентированный PHP, и Pear::DB — создание пакетных задач в PHP приложениях легко реализовывается, легко внедряется, и легко управляется.

Jack верит в простоту и вместо использования распараллеливания на сервере, он использует простую комбинацию: cron, PHP и MySQL для обработки задач в фоновом режиме.

Я делал и так и этак, и думаю, что cron имеет преимущество принципа «Keep It Simple, Stupid» (KISS) («Будь проще, придурок»). Это позволяет оставаться фоновым процессам простыми. Вместо того, что-бы иметь мультипотоковую обработку задач, постоянно запущенную в памяти и отъедающую память, пакетные срипты запускаются по крону и исключают утечки драгоценной памяти. Скрипты сами определяют необходима ли какая-то обработка, делают ее, и затем завершаются. Не надо беспокоиться об утечке памяти. Не нужно думать об остановке или зависании потока в бесконечном цикле.

10. Немедленно включите уведомление об ошибках — David Cummings

David Cummings запустил свою собственную software компанию, которая специализируетя на системах управления контентом, и уже получил несколько наград. Если кто и знает как эффективно разрабатывать PHP приложения, так это Dave.

David написал в SitePoint статью о двух PHP советах, которые он хочет дать начинающим. Один из них: Немедленно включите уведомление об ошибках. Это поможет Вам сохранить кучу времени в ближайшей перспективе.

Единственная, наиболее важная вещь, которую я говорю людям использующим PHP, это: включите режим уведомления об ошибках на максимальном уровне. Почему я должен это сделать? Обычно уведомление об ошибках установлено на уровень, который скрывает большинство из следующих вещей:

  • преждевременное объявление переменной,
  • ссылка на переменную, которая не доступна в данном месте, или
  • использование еще неустановленного определения (define).

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

Уведомление об ошибках помогает в более быстром и простом их обнаружении. Небольшой недочет в коде может быть быстро идентифицирован если PHP error reporting включен на максимальном уровне уведомления. Помогите себе сами, сохранить свое время, и дайте возможность PHP самому найти ваши ошибки.

Почитать еще по данной теме :
4 комментария на статью:
  1. коллайдер:

    отличный пост пожалуй я у вас его стырю, усточник обязательно укажу)

  2. admin:

    С указанием источника — пожалуйста, тырьте :)

  3. zolexiy:

    Я тоже стырю, такое не должно затеряться, спасибо :)

  4. Новости высоких технологий » Архив сайта » Размышения о php, его применении:

    […] Для затравки желательно прочитать статью 10 принципов PHP специалистов. […]

Ответить
Обязательные поля помечены *