8 советов по использованию PHP

1. Использование PHP с версии 5.5

В качестве PHP рекомендуется выбирать версию не ниже PHP 5.5, т.к. с данной версии в ядро PHP встроен OpCache, что ускоряет работу PHP.

Чтобы убедиться, что OpCache работает, можно просто выполнить функцию opcache_get_status().

2. Сокращённый вызов PHP-кода

PHP-код выполняется между тегами <?php ?>. Также возможно указывать сокращённый вид тегов <? ?>, но их не рекомендуется использовать (по умолчанию такое использование тегов запрещено).

Даже если запрещено использовать теги <? ?>, сокращённый код вывода переменной <?=$var?> работает в любом случае.

3. Закрывающий тег ?> в конце файла

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

Например, после подключения файла через include() надо использовать header(), чтобы сделать перенаправление, и в этом случае PHP может вывести ошибку, т.к. в подключаемом файле страница уже начала вывод контента из-за закрывающего тега ?> (который добавил перевод строки), а до использования header() не должно быть вывода содержимого страницы.

Об этом также написано в официальной документации: «Закрывающий тег PHP-блока в конце файла не является обязательным, и в некоторых случаях его опускание довольно полезно, например, при использовании include ... нежелательные пробелы не останутся в конце файла и вы все еще сможете добавить http-заголовки».

4. Использование регулярных выражений для поиска текста

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

$text = 'PHP-script';

# не правильно
if (preg_match('/PHP/', $text)) {
    echo 'строка найдена';
}

# правильно
if (strpos($text, 'PHP') !== false) {
    echo 'строка найдена';
}

5. Вывод ошибок на сайте

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

Подробнее о выводе ошибок

6. Длина массива в цикле for

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

$arr = ['PHP', 'Zend', 'MySQL'];

// неправильно
for ($i = 0; $i < sizeof($arr); $i++) {
    // код
}

// правильно
for ($i = 0, $l = sizeof($arr); $i < $l; $i++) {
    // код
}

7. Использование httponly при создании cookies

Параметр httponly запрещает доступ к cookies из JavaScript, в целях предотвращения XSS-атак.

# в .htaccess (рекомендуется)
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>

# при создании cookies
setcookie("name", "Сохранённая информация", time() + 3600, '/page.html', '', false, true);

Подробнее о создании cookies

8. Кэширование данных через Memcached

Для кэширования данных можно использовать Memcached, если сервер это позволяет, т.к. Memcached сохраняет данные в память сервера, что увеличивает скорость сохранения и получения закэшированных данных.