При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Построй свой сайт на PHP! |
||
Здравствуйте, уважаемые читатели!
(на бегу) Извиняюсь за задержку выпуска: на этой неделе весь в делах. Сегодня у нас в очередной раз переводная статья, впрочем, весьма познавательная (оригинал). В следующий раз я порадую вас авторской статьей, ну а сегодня - наслаждайтесь. А я побежал! (убегает вдаль) Пять вещей, которые возможны на PHP, но вы о них не знали.Автор: Лари Ульман (Larry Ullman)
Когда в далеком 1999 я начал программировать на PHP, я чувствовал, что открыл совершенный инструмент для быстрой разработки динамических веб-сайтов. В то время возможности и список функций языка были довольно скромными. Через несколько лет сам язык и поддерживаемые им расширения значительно эволюционировали, а его общая популярность серьезно возросла. К сожалению, вместе с тем даже для самого внимательного программиста становилось все сложнее и сложнее оставаться в курсе событий. Итак, если вы не опробовали все новые дополнения и не изучили каждую полезную функцию, начните с просмотра этого списка пяти вещей, которые возможны на PHP, но вы о них не знали! Первые два примера, обсуждаемые мной, охватывают код, с которым вы должны быть уже знакомы, однако в них он используется по-новому. Третий пример показывает, как отладить ваши сайты и увеличить их профессионализм с помощью всего нескольких строк кода. Затем следует функция определенно из разряда "я не знал, что такое существует!". Последний пример знакомит нас со штуковиной, которую вы теперь можете использовать с PHP (не хочу портить впечатление, но PHP до сих пор не может подстригать вашу лужайку). Естественно, обращайтесь к руководству по PHP, находящемуся в приятном соседстве с вами, для получения дополнительной информации по всем функциям, упомянутым в этой статье. 1. Проверка на область значений, используя switch Условие switch– это отличная управляющая структура, но существует не так уж много ситуации, в которых вы можете ее использовать. switch обычно используется для проверки, равно ли значение переменной заданному: <?php switch ($grade) { case 'A': echo 'Отлично!'; break; case 'B': echo 'Хорошая работа.'; break; case 'C': echo 'Грызите гранит науки.'; break; } ?> Но знали ли вы, что switch может также служить для проверки диапазона опций? Я тоже не знал до недавнего времени. Хитрость здесь заключается в использовании switch не для проверки переменной на значение, а для проверки различных условий на булево TRUE: <?php switch (TRUE) { case ($age < 16): echo 'Вы не можете водить.'; break; case ($age < 18): echo 'Вы не можете голосовать.'; break; case ($age < 21): echo 'Вы не можете пить спиртное.'; break; case ($age > 65): echo 'Вы должны быть уже на пенсии.'; break; default: echo 'Работа, работа, работа...'; break; } ?> Единожды поняв логику, вы можете легко адаптировать этот конкретный пример к многим другим ситуациям. Учитывая это, вы, возможно, начали переосмысливать полезность условия switch. 2. Как заставить print_r() возвращать свой результат вместо его вывода Надеюсь, вы уже знакомы с print_r(): эта функция просто выводит информацию о типе и значении переменной. Несмотря на то, что может показаться, что это не так уж и много, это безмерно полезный инструмент для отладки. Простой пример: <?php $albums = array ('The Bends', 'OK Computer', 'Kid A'); print_r ($albums); ?> В результате получаем <?php Array ( [0] => The Bends [1] => OK Computer [2] => Kid A ) ?> Что касается PHP версии 4.3 — значительного обновления языка — вы также можете перехватывать вывод print_r(). Эта функция имеет второй, опциональный, параметр для этих целей. Используя ранее объявленный массив, достаточно сделать всего лишь: <?php $capture = print_r ($albums, 1); ?> Итак, вы можете использовать ее, когда... 3. Хотите обрабатывать ошибки, как хочется вам Встроенная в PHP система вывода ошибок, в лучшем случае, является незрелой. Будь это ошибка лексического разбора, имеющий дурную славу "headers already sent" или "call to undefined function," все, что вы увидите, будет тип ошибки и имя файла, выделенные жирным шрифтом, немного технического жаргона и строка в коде, которая может быть, а может и не быть верной. Но вам не обязательно полагаться на стиль обработки ошибок в PHP. Уже в течение какого-то времени, PHP позволяет вам создавать собственный обработчик ошибок, вроде: <?php function my_handler ($number, $message, $file, $line) { // Адаптируйте форматирование, CSS и т.д. к стилю вашего сайта! echo '<p><font color="red">Произошли следующие ошибка, якобы на строке ' . $line . ' файла <i>' . $file . '</i>:</font> ' . $message . '</p>'; echo '<p>Существующие переменные:</p><pre>' . print_r($GLOBALS, 1) . '</pre><p></p>'; } ?> Затем вы сообщаете PHP, что ему следует использовать ваш обработчик, а не стандартный, при помощи вызова функции set_error_handler(). <?php set_error_handler('my_handler'); ?> Теперь все ошибки будут обрабатываться вашей функцией (существуют некоторые исключения, включая ошибки лексического разбора, который по-прежнему будут обрабатываться старым способом). В моем примере сообщение выводится с небольшим HTML форматированием и, что более важно, все существующие переменные выводятся внутри тегов <pre>. На этой картинке показано, как будет обработана ошибка деления на ноль (в настоящем PHP скрипте, здесь будут переменные с реальными значениями): Вы, возможно, думаете, что в моем обработчике ошибок я в действительности не сделал ничего нового с print_r(). Это правда, но я мог так же просто создать детализированное сообщение об ошибке, которое затем отправляется мне на электронную почту, стоит произойти ошибке на работающем сайте (когда вам не следует выводить информацию пользователю). Только на случай, если эта техника немного скучна для вас, я также упомяну следующее. Вместе со многими новыми функциями в PHP 5 был внедрен новый метод обработки ошибок в стиле C++/Java/C#. Этот формат использует синтаксис try-catch: <?php try { if (!@mysql_connect('localhost', 'username', 'password')) throw new Exception (mysql_error()); } catch (Exception $e) { echo 'Невозможно соединится с базой, потому что: ' . $e->getMessage(); } ?> Конечно, это только основной пример; Есть много другого, что вы можете сделать с этим методом обработки ошибок. В особенности если вы чувствуете себя комфортно с объектно-ориентированным программированием (ООП), вы можете объявить и использовать ваш собственный класс Exception. Вы также можете иметь несколько конструкций catch для захвата различных типов ошибок. 4. Быстрый поиск по директории Если вы программировали на PHP достаточное количество времени, вам, возможно, приходилось, внимательно просматривать несколько директорий. Возможно, вы создали онлайновую фото библиотеку, и вам требовалось находить каждое доступное изображение. Или, возможно, вы хранили данные в серии текстовых файлов. В любом случае, вам приходилось использовать функцию opendir(), затем - readdir() в цикле, а после этого заканчивать с помощью closedir(). В цикле, вы, похоже всего, вынуждены были использовать строку или функцию регулярного выражения, чтобы убедиться, что каждый файл в директории соответствует определенным критериям. Итак, я здесь, чтобы сказать, что существует более простой путь! Эта маленькая функция определенно проскочила мимо меня как крэк. Добавленная в PHP 4.3, glob() найдет файлы, соответствующие данному шаблону. Она делает всю работу opendir() в одной смертельной атаке. К примеру, если вы хотите указывать на каждую картинку в директории, вы могли бы сделать так: <?php $dir = './path/to/directory';
// Получаем все изображения. $files = glob ("$dir/{*.jpg,*.jpeg,*.gif}", GLOB_BRACE);
// Подтверждаем, что были найдены соответствия. if (is_array($files)) {
// Пробегаем по массиву foreach ($files as $image) { echo "<a href=\"$image\">$image</a><br>\n"; }
} else { echo 'Нет файлов, удовлетворяющих критериям поиска!'; } ?> Константа GLOB_BRACE – это флаг, говорящий функции находить соответствия для любого из имен в фигурных скобках (*.jpg,*.jpeg,*.gif). Существуют и другие константы, которые вы можете использовать для добавления слешей к возвращаемым именам, отмены сортировки имен или для возврата только имен директорий. 5. Приведите в порядок свой HTML HTML Tidy - малоизвестная жемчужина для веб-разработчиков. Этот инструмент анализирует HTML страницы и помогает вам:
HTML Tidy существовала давно, и ее поддержка все больше и больше была включена в различные приложения. Что касается версии 4.3, PHP теперь также поддерживает HTML Tidy как пакет PECL. Что касается версии 5, расширение HTML Tidy встроено в PHP, так что использовать ее еще проще. К несчастью, вопросы использования HTML Tidy не могут быть рассмотрены здесь, но если я возбудил ваше любопытство, сверните на домашнюю страницу HTML Tidy, http://tidy.sourceforge.net/, чтобы узнать больше об этом инструменте. После этого прочтите вводную статью по установке и использованию HTML Tidy на Zend.com. И наконец, просмотрите список функций Tidy в руководстве по PHP. Несмотря на то, что нет никакой гарантии, что вы не были знакомы со всеми пять упомянутыми идеями, я надеюсь, что вы узнали пару вещей, которые может предложить PHP. Конечно, я сам обнаружил эти уловки не интуитивно; я узнал многое, участвуя в новостных группах и листах рассылки по PHP. Также помогает регулярно читать (или перечитывать) части руководства по PHP. Комментарии пользователей часто служат великолепными источниками вдохновения и новых идей. О, если кто-то найдет способ, как заставить PHP подстригать мой газон, пожалуйста, скиньте мне сообщение! Об автореЛари Ульман - автор нескольких книг, в том числе PHP for the World Wide Web: Visual QuickStart Guide, PHP Advanced for the World Wide Web: Visual QuickPro Guide и PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide. Лари также преподает PHP Programming for the Web в Университете Калифорнии на Berkeley Online Extension. Лари в данный момент является Директором Цифровых Мультимедиа Технологий и Ведущим PHP Программистом в DMC Insights, Inc.. Когда Лари не пишет и не программирует, он проводит свое время в дремоте или в мечтах о дремоте. |
Copyright © 2004-2005 Построй свой сайт на PHP! Перепечатка возможна только с сохранением авторства. |
Выпуск #6: 2005-04-08 |
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.phpdev |
Отписаться |
В избранное | ||