Статьи

My PHP Best Practices

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

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

Я составил список вещей, которые, на мой взгляд, наиболее важны для меня, когда дело доходит до кодирования. Итак, без лишних слов:

1) Всегда развиваться с сообщениями об ошибках, установленными в E_ALL и E_STRICT.

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

2) Помните об эффективности / скорости

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

[Img_assist | NID = 6155 | название = | убывание = | ссылка = нет | ALIGN = правая | ширина = 200 | высота = 152]

Мой сайт перехода, когда я размышляю над одним методом над другим, http://www.phpbench.com/. Крис настроил эту страницу, чтобы рассчитать стоимость различных методов и сравнивать их при каждой загрузке страницы. Идите вперед и обновите страницу, вы заметите, что некоторые времена и проценты изменились незначительно.

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

Полезные ссылки:
63+ лучшая практика для оптимизации PHP кода Представления
PHP Performance Best Practices

ОБНОВЛЕНИЕ : Лоик Хогуин отметил, что время и усилия могут быть лучше потрачены на другое. Он имеет смысл в том смысле, что не стоит менять все ваши отпечатки, чтобы они отражались в вашем приложении. Я пытался сказать, что вы всегда должны знать о других альтернативах написанному вами коду, особенно в циклах и местах, где возникают узкие места. Не позволяйте этому уделять первоочередное внимание при разработке, но и не игнорируйте его полностью. Большинство вещей могут быть идентифицированы и исправлены во время профилирования (см. Ниже), но вы могли бы сделать немного проще с некоторым предвидением сейчас.

3) Переносимость, Переносимость, Переносимость!

Напишите код в среде Linux / Apache / MySQL, как вы планируете перевести его на платформу Windows / IIS / MSSQL. Я знаю, это звучит абсурдно, но вы будете приятно удивлены, когда этот кошмар станет реальностью. Если все сделано правильно, для конвертации всего потребуется примерно 1/100 времени, чем было бы написано плохо для очень специфической среды.

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

4) Не переусердствуйте!

Это может показаться противоречащим некоторым другим советам, но по возможности старайтесь не усложнять ситуацию. Что-то, что меня раздражает, это когда я вижу функцию preg_replace (), используемую, когда simplestr_replace () работал бы отлично. Это восходит к советам по эффективности, но хотя регулярные выражения гораздо более универсальны, они также намного медленнее. Таким образом, когда есть возможность сделать что-то гораздо более сложное, чем нужно, вместо того, чтобы хвастаться, просто сделайте свою работу.

Полезные ссылки:
десять советов PHP Best Practices, которые помогут вам получить работу 

5) Использовать стороннее программное обеспечение

Отладка — я написал статью о том, как XDebug заставит вас поверить в Бога . То, как он форматирует отладочные данные и выводит соответствующую информацию о области видимости, делает его необычным инструментом при попытке устранить ошибки и причуды в вашем коде. 

[Img_assist | NID = 6156 | название = | убывание = | ссылка = нет | ALIGN = правая | ширина = 200 | высота = 125]

Профилирование — по некоторым причинам, профилирование — моя любимая часть программирования, и, на мой взгляд, самый упускаемый из вида аспект цикла разработки. У X есть возможность генерировать профильные отчеты, которые могут быть расшифрованы различными программами. Я использую и люблю WebGrind, потому что я могу использовать его с любого ПК, и мне не нужно запускать какие-либо исполняемые файлы. Популярные альтернативы — KCacheGrind для Linux и WinCacheGrind. KCacheGrind чрезвычайно многофункциональн и мощен, хотя я обнаружил, что WinCacheGrind несколько глючит. Я предпочитаю WebGrind, потому что он представляет данные очень просто, но легко для понимания и намного легче делает узкие места. Видя, что страница загружается на 5000% быстрее, потому что я тупо поставил функцию db-connection в неправильное место, это согревает мое сердце.

PHPUnit — популярное программное обеспечение для юнит-тестирования. Найти больше информации здесь: http://phpunit.sourceforge.net/

Полезные ссылки:

Лучшие практики в разработке PHP  

6) Установите и придерживайтесь правил именования и стилей кодирования

Чистый код начинается с установления соглашения об именовании и его соблюдения. Это означает наличие схемы для функции, переменной, класса и констант. Мало того, что это поможет вам быстрее кодировать, потому что вам не нужно бегать, чтобы помнить, как вы назвали этот последний объект базы данных, но ваш код будет выглядеть намного более гладким и профессиональным. Конечно, стиль, который вы используете, зависит от личных предпочтений, но посмотрите на Zend и Pear, чтобы узнать, как они справляются с ситуацией.

function myFunction($my_var) {  
}
// Which is better?
function my_function($myVar)
{
}

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

7) Проверьте и продезинфицируйте ваши входы!

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

// Query  
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));

Использование sprintf () и mysql_real_escape_string () — это полезные привычки, но вам не стоит злоупотреблять sprintf (), когда это не нужно. В некоторых случаях это не нужно, и это медленнее, чем обычная конкатенация строк.

if (isset($myVar) && is_array($myVar)) {  
// GOOD
}
if ($myVar) {
// BAD
}

 

Всегда используйте isset () или empty () перед проверкой на тип, потому что is_array () является дорогостоящим и может потратить много ценных циклов процессора, если переменная вообще не установлена. Короткое замыкание — ваш лучший друг, когда дело доходит до эффективного программирования.

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

Полезные ссылки:
лучшие практики веб-приложений

8) Окружите себя людьми, которые знают больше, чем вы.

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

Никогда не переставай учиться!

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