10 правил PHP-мастеров

принципы

От Автора:

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

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

1. Пользуйтесь PHP только тогда, когда это нужно – Расмус Лердорф (Rasmus Lerdorf)

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


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


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


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


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

php принципы

2. Используйте множество таблиц в PHP и mySQL для масштабируемости – Мэтт Малленвег (Matt Mullenweg)

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

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


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


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

php принципы

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

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

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


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


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


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


php принципы

4. Уделите внимание PHP-кэшированию – Бен Больбо (Ben Balbo)

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


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


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

Кэширование вызовов функций

Установка заголовков expiry

Кэширование закачки файлов в IE (Internet Explorer)

Кэширование шаблонов

Cache_Lite

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

php принципы

5. Ускоряйте разработку PHP при помощи IDE, шаблонов и фрагментов – Чед Киффер (Chad Kieffer)

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

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


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


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

Используя IDE вроде Eclipse и пакет PDT, вы обнаружите, что время разработки определенно ускорится. IDE будет автоматически закрывать скобки, добавлять недостающие точки с запятыми, и даже позволит вам исправлять неполадки в текстовом редакторе, без необходимости выкладывания на сервер.

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

php принципы

6. Улучшайте функции фильтрования PHP – Джоуи Сочеки(Joey Sochacki)

Так как Джоуи Сочеки, может быть, не такое великое имя, как Мэтт Малленвег (Matt Mullenweg) в сообществе PHP, он бывалый веб-разработчик и делится с нами советами, почерпнутыми на этом пути, в своем блоге Devolio.

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


Фильтрация данных. Нам всем приходится это делать. Большинство, если не все из нас, относятся к нему с презрением. Однако неведомыми большинству остаются функции фильтрации PHP, которые позволяют производить всякого рода фильтрацию и проверку правильности (validation). Пользуясь функциями PHP filter_*, можно проверять правильность и «стерилизовать» данные, URL’ы, адреса e-mail, IP-адреса, отсекать недопустимые символы и много другое, сравнительно легко.


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

php принципы

7. Пользуйтесь фреймворком PHP – Джош Шарп (Josh Sharp)

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

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


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


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

php принципы

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

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

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

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

php принципы

9. Используйте пакетную обработку данных – Джек Д. Херрингтон (Jack D. Herrington)

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

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


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


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


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


php принципы

10. Немедленно включите оповещения об ошибках – Дэвид Каммингс (David Cummings)

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

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


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

Преждевременное объявление переменной.

Обращение к переменной, недоступной в этом сегменте кода, или

Использование определения, которое не было установлено

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

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

php принципы

Автор: Glen Stansberry

Перевод и редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

Источник: http://net.tutsplus.com

E-mail: contact@webformyself.com

Проект webformyself.com — Как создать свой сайт. Основы самостоятельного сайтостроения

P.S. Хотите опубликовать интересный тематический материал и заработать? Если ответ «Да», то жмите сюда.

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки: , ,

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (13)

  1. Никита

    Гут))) про пхп хотелось бы узнать подробнее ведь до этого знаком был только с HTML и яваскрипт, но я задумал онлаин игрушку и одних знаний по html и яваскрипт тут будет маловато….
    За интересную статью спасибо)))

  2. АЛЕКСЕЙ

    Спасибо за хорошо подготовленный материал. Для тех кто только начинает учить php он будет очень полезен. Я допустим уже давно работаю с php и то с чувсвом полного удовлетворения прочитал вашу статью.

  3. Евгений

    И мне интересно было прочитать. Спасибо.

  4. Валера

    А я ожидал большего… конкретики… например — включите оповещения об ошибках, очень полезный совет, наверное самый ценный… а как? я новичок хотя бы ссылку на php.ru или еще куда, можно конечно самому найти… или используйте mysql_fetch_assoc вместо mysql_fetch_array

    • Alex

      По поводу отсутствия ссылок. Сейчас даже в вакансии на должность php прогера пишут обязательный пункт. «Умение пользоваться поисковой системой GOOGLE или другой». )))

  5. Ольга

    Если честно, статья немного замудренная. Я использую php на своих сайтах, так намного проще вносить любые изменения. Лучше бы описали практические советы по работе с php, я думаю, они пригодились бы многим.

  6. Lena

    слишком обще, хотелось бы поподробнее и попрактичнее

  7. Ekaterina

    Ваша рассылка начинается так:»Ekaterina, с Вами Рог Виктор и Бернацкий Андрей!», а я не внимательно прочитала и у меня получилось вот так: «Ekaterina, с Вами Бог Виктор и Бернацкий Андрей!», т.е. буква Р перевернулась у меня в мозгу, прикольно. А потом открываю вашу статью полную картинок библейского содержания. В PHP я пока ничего не понимаю, но пытаюсь изучать.

  8. Елена

    Добрый день! Понравилась Ваша рассылка уроков по основам HTML! Ничего лишнего, много конкретных примеров! С удовольствием подписалась бы на рассылку уроков по основам PHP аналогичными Вашим урокам по HTML.
    С уважением, Елена

  9. JohnnySuperb

    Хоть и нет ни какой конкретики, но статья все равно полезная. Правда, некоторые моменты очень скользко упомянуты — например, 2 правило — про какие таблицы идет речь? когда для каждого блога отдельная база или все хранится в одной базе, но у таблиц разные префиксы? А планировали вообще все в одну таблицу засовывать и создавать дополнительные поля для разделения данных между пользователями? Но чувствуется, что эти вопросы не по адресу

  10. Alexd

    Это больше какая то реклама, чем полезный материал оценка very bad

    вот противоположный пример, http://webformyself.com/15-poleznyx-sovetov-v-php

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree