Создание веб сайтов
php технологии, разработка сайтов на php

Закон Мёрфи гласит: "Если что-то может пойти не так, так оно и случится". Серве-
ра отключются от электричества, время соединений превышает допущенный предел,
пути ведут в никуда, а жесткие диски сыпятся.
29
PHP Inside #17 Идеи
Лучшая практика
Это то, что наш скрипт не в состоянии контролировать. Работа программиста за-
ключается в том, чтобы снабжать скрипт способами обработки этих или других исключи-
тельных ситуаций. И не будем забывать, что обработка ошибок может помочь нам в от-
ладке проблемы, позволяя узнать о её существовании и её сути.
Мои примеры написаны в процедурном стиле PHP4 - но те же самые концепции
применимы и для объектно ориентированного подхода. К примеру, существует класс
PEAR_Error, а PHP5 обладает полной поддержкой имеханизма "исключений" (exceptions)
и структуры "try/catch". Используйте их, если считаете нужным.

Пример 1

Обработка ошибок, при взаимодействии с СУБД - момент, часто упускаемый про-
граммистами новичками. Большинство новичков используют запросы соединения и
произведения выборки (select), но когда получение выборки генерирует ошибку они не
представляют, что произошло не так. Обработка ошибок во всем коде позволит вам ТОЧ-
НО определить, где изначально возникла проблема. Простой пример, с ипользованием
СУБД MySQL:
<?php
$link = mysql_connect($host, $usr, $pass);
// обрабатываем ошибку соединения
if(!$link)
{
// обрабатываем ошибку - выводим на экран, в лог, делаем перенаправление, что
угодно
// если мы в состоянии отладки - это оповестит меня о возникшей проблеме
// в противном случае спрячет диагностику от злоумышленника
if($debug)
{
echo 'Ошикба: соединение с СУБД'.mysql_error();
}
// аккуратно выходим
exit;
}
?>

Пример 2

Что насчет тех, кто хочет работать с файлами - читать, писать, за/скачивать?
<?php
$basepath = '/home/usr/www/downloads/';
switch($_POST['type'])
{
case 'audio':
$type = 'audio/';
break;
case 'video':
$type = 'vid/';
break;
// catch anything
default:
$type = 'lyric/';
}
$path = $basepath.$type.$user.'/';
// обработка ошибки пути
if(!is_dir($path))
{
// обрабатываем ошибку - выводим на экран, в лог, делаем перенаправление, что
угодно
// возвращаемся назад в форму, или аккуратно выходим
30
PHP Inside #17 Идеи
Лучшая практика
}
?>