Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


30+ хороших рекомендаций для начинающих PHP-разработчиков

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

1. Подружитесь с руководством по PHP

Если вы новичок в PHP, то пришло время знакомиться с такой замечательной вещью, как руководство по PHP. Руководство по PHP невероятно полное и имеет очень полезные комментарии после каждый статьи. Перед тем, как задавать вопросы или пытаться что-то выяснить самому, пожалейте время и направьтесь прямиком к руководству. Скорее всего, ответ на ваш вопрос уже дожидается вас в одной из полезных статей на сайте php.net.

2. Включите опцию "Error Reporting"

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

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

3. Попробуйте IDE

IDE (Integrated Development Environments - Интегрированные Среды Разработки) - полезные инструменты для любого разработчика. Можно сказать, что это инструмент не для всех, но он определенно имеет свою нишу. IDE предоставляют такие инструменты, как:

- подсветка синтаксиса
- автозавершение кода и подсказки
- сообщения об ошибках
- рефакторинг кода (изменение структуры кода с цель его оптимизации) и многие другие полезные инструменты.

4. Попробуйте использовать PHP-фреймворк

Вы можете много узнать о PHP просто экспериментируя с PHP-фреймворками. Фреймворки вроде CakePHP или CodeIgniter позволят вам быстро создавать PHP-приложения не будучи экспертом в PHP-программировании. Можно сказать, что они - своеобразные "PHP-обучалки", которые показывают, каким должно быть PHP-приложение и демонстрируют важные принципы программирования (вроде отделения логики приложения от дизайна и т.п.)

5. Начните использовать принцип DRY

DRY означает Don't Repeat Yourself (Не повторяйте сами себя). Это важный принцип программирования, не важно, с каким языком вы работаете. Принцип DRY означает, что вам не следует писать повторяющиеся блоки кода. Вот пример от Reinhold Weber:

Просто код:

$mysql = mysql_connect('localhost','reinhold','secret_hash');
mysql_select_db('wordpress') or die("cannot select DB");

С принципом DRY:

$db_host = 'localhost';
$db_user = 'reinhold';
$db_password = 'secret_hash';
$db_database = 'wordpress';

$mysql = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_database);

6. Делайте отступы и используйте пробелы для повышения читабельности кода

Если вы не используете отступы и пробелы в своем коде, то результат будет похож на работы Джексона Поллока (прим. - американский художник, работавший в стиле абстрактный экспрессионизм). Убедитесь, что ваш код читабелен и в нем легко найти то, что вам нужно, поскольку вам, с большой долей вероятности придется вносить в него изменения в будущем. IDE и продвинутые текстовые редакторы могут делать отступы автоматически.

Хостинг

7. Используйте "принцип разделения"

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

8. Всегда используйте

<?php ?>

Часто программисты используют сокращенные версии при открытии блока кода PHP. Вот наиболее типичные из них:

<? echo "Hello world"; ?>

<?="Hello world"; ?>

<% echo "Hello world"; %>

Экономя буквально несколько символов, такие способы записи являются непризнанными и неофициальными. Придерживайтесь формата

<?php ?>

так как он гарантированно будет поддерживаться во всех будущих версиях.

9. Придерживайтесь смысловых, последовательных принципов именования

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

10. Комментируйте, комментируйте, комментируйте

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

11. Установите MAMP/WAMP

Для наших с вами реалий лучше говорить про Denwer и XAMPP.

MySQL - наиболее популярная СУБД при работе с PHP (хотя, разумеется, не единственная). Если вы хотите создать среду для разработки и тестирования ваших PHP-приложений на локальном компьютере, присмотритесь к MAMP (Mac) или WAMP (Windows). Установка MySQL на вашем компьютере может оказаться достаточно утомительным делом, а подобные готовые решения уже включают в себя установленную MySQL. Удобно и просто.

12. Ограничивайте ваши скрипты

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

13. Используйте объекты (или ООП)

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

14. Знайте разницу между одинарными и двойными кавычками

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

15. Не кладите файл с функцией phpinfo() в корень вашего сайта

Phpinfo() - чудесная вещь. Просто создав файл с содержанием:

<?php phpinfo(); ?>

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

16. Никогда не доверяйте своим пользователям

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

На сайте php.net есть пример такой правильной инициализации переменных:

<?php
if (correct_user($_POST['user'], $_POST['password']) {
    $login = true;
}

if ($login) {
    forward_to_secure_environment(); // дальше, к безопасной зоне
}
?>

17. Храните пароли в зашифрованном виде

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

echo md5('myPassword'); // результат - deb1536f480475f7d593219aa1afd74c

18. Используйте средства визуализации при разработке базы данных

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

Хостинг

19. Используйте буферизацию вывода

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

Чтобы активировать данную функцию, просто добавьте функцию ob_start() в начало файла. В конце файла примените функцию ob_end_flush().

<!DOCTYPE html>
<?php ob_start(); ?>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>untitled</title>
</head>
<body>

</body>
</html>
<?php ob_end_flush(); ?>

20. Защищайте ваши скрипты от SQL-инъекций

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

Пример использования функции mysql_real_escape_string:

$username = mysql_real_escape_string( $GET['username'] );

Пример использования подготовленной инструкции:


$id = $_GET['id'];
$statement = $connection->prepare( "SELECT * FROM tbl_members WHERE id = ?" );
$statement->bind_param( "i", $id );
$statement->execute();

21. Попробуйте ORM

Если вы используете объектно-ориентированный подход,  то вы можете использовать изящную Объектно-реляционную проекцию (Object-relational mapping). Вкратце: Объектно-реляционная проекция позволяет вам работать с базами данных точно таким же образом, как и с классами и объктами в PHP.

Есть множество ORM-библиотек для PHP, вроде Propel и ORM встроен в некоторые PHP-фреймворки, например в CakePHP.

22. Кэшируйте страницы, управляемые базой данных

Кэширование страниц, управляемых базой данных - отличная идея для повышения производительности приложения. С помощью такого замечательного друга, как ob_start() совсем нетрудно отдавать статические файлы с контентом. Вот пример, взятый с сайта snipe.net:


// Начало вашего скрипта
$cachefile = 'cache/'.basename($_SERVER['SCRIPT_URI']);
$cachetime = 120 * 60; // 2 hours
// Отдать контент из кэша, если он "младше" $cachetime
if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) {
include($cachefile);
echo "<!-- Кэшировано ".date('jS F Y H:i', filemtime($cachefile))." -->";
exit;
}
ob_start(); // начало работы буферизации вывода
// Здесь ваш обычный PHP-код и HTML-контент
// Конец вашего скрипта
$fp = fopen($cachefile, 'w'); // открываем для записи файл кэша
fwrite($fp, ob_get_contents()); // сохраняем содержимое буфера в файл
fclose($fp); // закрываем файл
ob_end_flush(); // посылаем вывод в браузер

Данный пример кода позволит использовать кэшированную версию страницы, если она "младше" 2 часов.

23. Используйте систему кэширования

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

- Memcached
- APC
- XCache
- Zend Cache
- eAccelerator

24. Проверяйте Cookies

Информация в Cookies, как и любая другая информация, может быть опасной. Вы можете проверить Cookies с помощью функций htmlspecialchars или mysql_real_escape_string

25. Используйте системы кэширования статических файлов

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

26. Оптимизируйте ваш код

Анализ и оптимизация вашего кода с помощью специального расширения PHP - xdebug поможет вам быстро отыскать "узкие" места и другие потенциальные проблемы в коде. Некоторые IDE, например, Netbeans имеют встроенные средства для осуществления такого рода задач.

27. Кодируйте по стандарту

После того, как вы немного освоились в PHP, вы можете начать обучаться кодировать в соответствии с некоторыми стандартами. Между стандартами, конечно есть отличия (скажем, между Zend и Pear), и нахождение "своего" стандарта и способность придерживаться его поможет вам, в конечном счете стать последовательным в вопросах кодирования.

28. Держите функции вне циклов

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

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

29. Не плодите переменные

Некоторые люди стараются повысить читабельность своего кода, присваивая значение какой-либо предопределенной переменной другой переменной с более коротким и лаконичным названием. Данный прием избыточен по своей сути и потенциально способен чуть ли не удвоить объем памяти, необходимый для выполнения скрипта. Google Code приводят следующий пример:

Неоптимально:

$description = strip_tags($_POST['description']);
echo $description;

Оптимально:

echo strip_tags($_POST['description']);

30. Обновитесь до последней версии PHP

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

31. Уменьшайте количество запросов к базе данных

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

32. Не бойтесь просить помощи

Люди часто стараются скрыть тот факт, что они чего-то (или почти ничего) не знают в какой-то конкретной области. Никто не хочет быть "нубом". Но как же можно научиться, если никому не задавать вопросы? Используйте специализированные форумы по интересующей вас теме, StackOverflow. "Родной" сайт PHP также имеет страницу помощи.

Glen Stansberry
net.tutsplus.com
Перевод: Дмитрий Науменко

P.S. Чем бы вы ни занимались в теме веб-разработки, загляните на этот сайт. Там масса полезных материалов почти по всем темам (PHP, JavaScript, верстка, веб-дизайн, фреймворки, CMS-системы и т.д.)

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх