Шаг 1 - Программирование на PHP

Появилась мысль рассказать Вам о языке PHP. Головной сайт разработчиков этого языка http://www.php.net, на нем Вы сможете скачать интерпретатор языка и узнать о языке практически все (для тех кто не боится английского).

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

Сейчас пока не будем ничего говорить о его настройке. Скорее всего Вы пользуетесь уже готовым хостингом с установленным PHP, поэтому его уже настроили за Вас. Квалификация и знания администратора сервера не известны, потому как его настроили трудно сказать. Этот шаг я хочу посвятить именно этому. Моя задача страшно напугать Вас, чтобы при разработке своих программ Вы боялись за всё. Интернет полон мошенниками, хакерами, ламерами и другими компьютерными сущностями :) Ваша программа должна уметь противостоять всем. Она должна справляться с ошибками настройки, которые допустил администратор, она должна адекватно обрабатывать мудреные запросы, которые пытается скормить ей хакер, или ошибочные запросы посылаемые другими. Проще говоря Вы должны научиться разрабатывать программы для Интернета на PHP так, чтобы они были готовы ко всему. Только так можно будет говорить о правильности работы, а главное безопасности ваших данных, сайта и возможно даже всего бизнеса.

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

Первое - это встраивание программы в код HTML страницы. Думаю не секрет для Вас, что PHP файл - это обычный файл HTML со специальными вставками кода на языке очень сильно по синтаксису напоминающем С/С++ и Perl. Так вот вставки кода эти отделяются от HTML документа специальным символами начала кода <?php и его конца ?>:

<p>HTML документ</p>
<?php
echo "<p><b>Hello world на PHP</b></p>";
?>
<p>Опять HTML документ</p>

Знающие люди сразу спросят, а почему именно так ? Ведь можно отделять короче, с помощью символов <? ?> или <% %>.

А я отвечу, вы правы... Но вы заблуждаетесь :) И объясню почему. Такой стиль выделения кода задается специальными опциями в файле конфигурации, а именно опциями short_open_tag это для <? ?> и опцией asp_tags для <% %>. Из начальной установки "на добро" я полагаю, что администратор настроил ваш PHP мизинцем левой ноги, поэтому не хочу полагаться на качество этой работы. Поэтому говорю просто "выкиньте это из головы", чтобы не обнаружить вдруг, что Ваш навороченный скрипт на PHP не работает вообще.

Второе - контроль ошибок кода. Если настроить интерпретатор PHP так, чтобы он контролировал все возможные ошибки, то Вы сразу же защитите себя от множества подводных камней. За эту настройку отвечают несколько опций error_reporting и display_errors. Первая из них контролирует "глубину" контроля ошибок, а вторая возможность отображения ошибок непосредственно в тело создающегося документа. Для нас продпочтительнее выводить все ошибки, независимо от того, как настроен PHP администратором. В этом случае мы будем получать предупреждение о любом изъяне уже на этапе разработки. Для того, чтобы установить свои значения этих параметров на время работы программы, существует функция ini_set(). Давайте попробуем два варианта программы.

Первый вариант:

<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ERROR);
echo "Переменная \$i=\"",$i,"\"";
?>

Второй вариант:

<?php
ini_set("display_errors","1");
ini_set("error_reporting", E_ALL);
echo "Переменная \$i=\"",$i,"\"";
?>

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

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

Переменная $i=""

И во втором случае:

Переменная $i="
Notice: Undefined variable: i in /home/www.firststeps.ru/1.php on line 4
"

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

У параметра error_reporting есть еще одно значение E_STRICT, которое было введено в версии PHP 5 для еще большей проверки совместимости и работоспособности кода во время работы. Поэтому для совместимости с другими версиями напишем такой код:

<?php
ini_set("display_errors","1");
if (version_compare(phpversion(), "5.0.0", ">")==1) {
	ini_set("error_reporting", E_ALL | E_STRICT);
} else {
	ini_set("error_reporting", E_ALL);
};
?>

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


Следующий Шаг | Оглавление
Автор Кузин Андрей - 17.10.2005