создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

15 полезных советов для работы на PHP

Все советы взяты из опыта веб-программистов.

Не использовать @

Оператор @ используется для скрытия ошибок при использовании или выполнении неких функций. Данным оператором не стоит пользоваться по двум причинам: он не оправдал себя в быстродействии, то есть медленный; автоматически блокирует все возникшие ошибки при выполнении функции, что есть нежелательным.

Забыть об cp-1251

Всем, кто все ещё работает с кодировкой cp-1251, срочно переходите на utf-8, т.к. множество функций по работе со строками поддерживает только utf8. И это только 1 из причин.

Читайте phpmanual

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

Самый лучший код - там, где его меньше

<?
//длинный код
if($a<b){
$msg='a<b';
}else{
$msg='a>b';
}
//короткий аналог кода
$msg=(a<b)?'a<b':'a>b';
?>

Используйте одинарные кавычки

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

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

Приведу простые примеры оптимизации:

Echo быстрее, чем print

Как можно чаще освобождайте память

require_once не так уж и хорош

str_replace быстрее, чем preg_replace

Избегайте регулярок, лучше использовать строковые функции, они быстрее

Как можно больше кэшируйте

Не всё должно быть ООП

mod_gzip - модуль Apache, который позволяет сжимать ваши данные на лету и может уменьшить объем передаваемых данных до 80%

Что такое освобождение памяти?

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

Также желательно использовать минимальное количество переменных для выполнения определенных инструкций. Потому что огромное обилие переменных снижает читабельность кода.

Рассмотрим пример:

//так писать не стоит
$time=time();
$login=$_SESSION['login'];
$hash=md5($login.$time);
//если можно записать так
$hash=md5($_SESSION['login'].time());

Сначала пишем, потом оптимизируем

Это правило применяется практически везде и во всем (это касается не только PHP, и программирование в целом). Не целесообразно оптимизировать, когда сценарий в процессе разработки. Ты не видишь всей картины в целом.

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

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

Ошибка:

for($i=0;$i&amp;amp;lt;count($array);$i++){
//операторы
}

Куда лучше сразу занести в некую переменную количество элементов массива и больше не трогать её.

$elements = count($array);
for($i=0;$i&amp;amp;lt;$elements;$i++){
//операторы
}

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

Рассмотрим пример, который мы потом более оптимизировано перепишем.

1.if(strlen($string)&amp;amp;lt;10){echo &amp;amp;"String is short&amp;amp;";}

Оптимизированный вариант:

1.if(!isset($string{10})){echo &amp;amp;" String is short&amp;amp;";}

Поговорим об инкрементах:

Инкремент глобальной переменной в 2 раза медленнее, чем локальной.

Инкремент свойства объекта (т.е. $this->inc++) в 3 раза медленнее, чем локальной переменной.

Инкремент неопределённой переменной в 9-10 раз медленнее, чем заранее инициализированной.

Инкремент локальной переменной в методе - самый быстрый. Почти также работает инкремент локальной переменной в функции.

Заключение

Не ленитесь читать и писать, писать и ещё раз писать

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

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

Просто садитесь каждый день, и по 60 минуток уделяйте PHP!

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting