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

10 принципов мастеров PHP Данный материал содержит мнения мастеров PHP-разработки по самым разным вопросам. Каждый из них является профессионалом в своей области и делится с нами частью своего знания этого языка.

1. Используйте PHP только тогда, когда это действительно необходимо – Расмус Лердорф

Расмус Лердорф создал PHP в 1995 году и, с тех пор язык распространился в среде веб-разработчиков как лесной пожар, меняя облик Интернет. Расмус, однако, не создавал PHP именно для этой цели. Язык PHP создавался не для решения задач веб-разработки.

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

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

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

2. Используйте много таблиц в связке "PHP+MySQL" для повышения масштабируемости – Matt Mullenweg

Никому не нужно объяснять, каков его авторитет в среде PHP-разработчиков. Он, вместе с сообществом разработал самую популярную на сегодняшний день систему для ведения блогов - Wordpress. После создания движка, Matt и его помощники запустили wordpress.com - бесплатный сайт для блоггинга. На момент написания материала на wordpress.com размещены более 4 миллионов блогов, а их пользователи пишут по 140 тысяч постов ежедневно.

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

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

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

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

Dave Child - создатель сайта Added Bytes, частью содержимого которого являются великолепные "шпаргалки" по многим языкам программирования. Dave работал во многих компаниях-разработчиках в Великобритании и стал известен и авторитетен в среде программистов.

Dave предлагает вам и некоторые мудрые советы для написания безопасного кода на PHP: не доверяйте вашим пользователям. Они могут вас огорчить.

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

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

4. Делайте ставку на PHP-кэширование – Ben Balbo

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

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

Существует много способов кэширования в PHP:

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

5. Ускоряйте разработку на PHP, используя IDE (интегрированную среду разработки), шаблоны и сниппеты – Chad Kieffer

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

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

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

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

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

6. Лучше используйте функции фильтрации в PHP – Joey Sochacki

Хотя имя Joey Sochacki и не столь известно в среде PHP-разработчиков, как имя Matt Mullenweg, он является очень опытным веб-разработчиком и делится опытом, накопленным в процессе работы в своем блоге Devolio.

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

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

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

7. Используйте PHP-фреймворк – Josh Sharp

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

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

"Однако легкость освоения PHP - слабость данного языка. Так как практически нет ограничений на структуру кода, то очень легко написать плохой код. Но есть выход - используйте фреймворк.

PHP-фреймворки помогают стандартизировать ваше приложение, и вы можете сэкономить уйму времени при работе над проектом.

8. Не используйте PHP-фреймворк – Расмус Лердорф

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

Во время презентации на Drupalcon 2008 Расмус сравнивал скорость ответа страницы на PHP с типичным "Hello World" в случае использования чистого PHP и ряда фреймворков. Результаты показали, что фреймворки оказались намного медленнее, чем простой код PHP.

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

[Замечание: Если вам все же нужно использовать фреймворк, то Расмусу больше всего нравится CodeIgniter, так как он, по словам Расмуса "меньше всего похож на фреймворк"]

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

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

Jack D. Herrington рекомендует использовать пакетную обработку и крон для решения тех задач, которые могут быть решены в фоновом режиме. Пользователи в сети не хотят ждать долго. Есть некоторые задачи, решение которых занимает немало времени и их можно производить в фоновом режиме.

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

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

10. Немедленно включите Error Reporting – David Cummings

David Cummings руководит компанией, занимающейся разработкой CMS - систем управления контентом. Его компания завоевала несколько наград и если кто и знает, как разрабатывать PHP-приложения эффективно, то это David.

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

"Это самая первая вещь, о которой я говорю людям, использующим PHP - выставить error reporting на отображение всех ошибок. Зачем? По умолчанию error reporting не установлена так, что вам не будут показываться многие, казалось бы, незначительные ошибки вроде:

- объявление переменной раньше времени,
- ссылка на недоступную в данной части кода переменную и др.

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

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

 

( Статья - 10 Principles of the PHP Masters, Автор: Glen Stansberry)

Перевод - Дмитрий Науменко

Источник: codeharmony.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.