15 полезных советов в PHP

От автора: в данной статье я хочу Вам дать 15 полезных советов php. Все советы взяты из моего личного опыта. Поэтому буду рад Вашим комментариям и критическим замечаниям как оценка моих трудов.

 

Первый совет PHP. Не использовать @

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

Забыть об cp1251

Важный совет PHP. Всем, кто все ещё работает с кодировкой cp1251 – срочно переходите на utf8!!! Т.к. множество функций по работе со строками поддерживает только utf8. И это только одна из причин.

Читайте phpmanual

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

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

<?php
//длинный код
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 применяется практически везде и во всем (это касается не только PHP, и программирование в целом). Не целесообразно оптимизировать, когда сценарий в процессе разработки. Ты не видишь всей картины в целом. Насколько, правда, это целесообразно, но я всегда набрасываю рабочий черновой вари-ант, а потом уже начинаю анализировать и добавлять или удалять элементы кода. Так же важно изначально все обдумать и написать толковый черновой вариант, иначе смысл его писать, если потом все придется переделывать практически с нуля. Извечная проблема начинающих кодеров состоит в том, что когда они перебирают массив в цикле for, они в каждой итерации используют функцию count(), которая подсчитывает количество элементов в массиве. Что опять-таки сказывает на быстродействии сценария. Ошибка:

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

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

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

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

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

if (strlen($string) < 10) { echo "String is short"; }

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

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

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

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

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

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

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

Заключение по советам PHP: не ленитесь читать и писать, писать и ещё раз писать

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

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

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


Загрузка комментариев...