Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

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

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Dima (you can also view the original English article)

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

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


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

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

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

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

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

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


2. Используйте множество таблиц с PHP и MYSQL для масштабируемости - Мэтт Малленвег

Никто не должен подвергать сомнению авторитет Мэтта Малленвега когда говорим о PHP. Он (наряду с бешеным сообществом) разработал самую популярную систему блогов на планете: Wordpress. После создания Wordpress Мэтт и компания запустили звездный Wordpress.com, бесплатный блог-сайт, основанный на базе блогов Wordpress MU, для нескольких блогов. На момент написания этой статьи на Wordpress.com размещалось более 4 миллионов блогов, и сегодня их пользователи написали более 140 000 сообщений. (Вы можете увидеть более интересную статистику об использовании Wordpress.com здесь.)

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

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

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


3. Никогда, никогда не доверяйте своим пользователям - Дейв Чаилд

Дейв Чаилд - это детище (были объявлены) за недавно переименованным веб-сайтом Added Bytes (ранее ilovejackdaniels.com), на котором были представлены отличные шпаргалки Дейва для многих языков программирования. Дейв работал во многих компаниях-разработчиках в Великобритании и зарекомендовал себя как авторитет в мире программирования.

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

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

Далее Дейв приводит конкретные примеры безопасных практик в первой, второй и третьей частях своей серии "Написание безопасного PHP". Но его окончательный вывод заключается в следующем:

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


4. Используйте кеширование PHP - Бен Бальбо

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

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

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

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

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


5. Ускорьте разработку PHP с помощью IDE, шаблонов и фрагментов кода - Чад Киффер

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

Чад считает, что использование IDE, такой как Eclipse PDT (пакет разработки Eclipse для PHP) со смесью шаблонов и фрагментов, действительно может сократить время выполнения проекта.

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

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

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


6. Лучше используйте функции фильтра PHP - Джои Сохацки

Хотя Джои Сохацки, возможно, и не так знаменит, как Мэтт Малленвег в сообществе PHP, он опытный веб-разработчик и делится советами, которые он подхватил в своем блоге Devolio.

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

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

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


7. Используйте PHP Framework - Джош Шарп

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

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

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

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


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

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

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

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

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


9. Используйте пакетную обработку - Джек Д. Херрингтон

Джек Херрингтон не новичок в PHP и мире разработки. Помимо написания более 30 статей для престижного IBM developerWorks, Джек также опубликовал книги по программированию, такие как PHP Hacks. Джек добросовестный эксперт.

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

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

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

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


10. Немедленно включите отчеты об ошибках - Дэвид Каммингс

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

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

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

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

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

Прочитайте предыдущий пост из этой серии: 10 принципов мастеров CSS.

  • Подпишитесь на RSS-канал NETTUTS, чтобы получать ежедневные руководства и статьи по веб-разработке.

Глен Стэнсберри - веб-разработчик и блогер, который боролся больше раз, чем он хотел бы признать с помощью CSS. Вы можете прочитать больше советов по веб-разработке в его блоге Web Jackalope.


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.