Полезные статьи о разработке сайтов от вебмастера
Категория:
При создании сценариев в PHP мы часто ограничиваемся небольшим числом API функций, к наиболее распространенным функциям относятся print(), header(), define(), isset(), htmlspecialchars() и т.д. Если необходима функциональность, которой нет в PHP, мы часто пишем её, применяя уже известные простые компоненты. В действительности PHP API предлагает множество функций, которые используются редко. Среди функций, доступных в PHP, я нашел несколько действительно интересных функций.
sys_getloadavg() – является функцией, которая возвращает три отчета «загрузки» системы. Загрузка – это количество процессов в очереди выполнения системы. Три элемента в массиве содержат среднюю нагрузку в течение последних 1, 5 и 15 минут. В Руководстве по PHP показан хороший пример использования этой функции:
$load = sys_getloadavg(); if ($load[0] > 80) { header('HTTP/1.1 503 Занят, повторите попытку позже'); die('Сервер перегружен. Повторите попытку позже.'); }
Вместо того, чтобы делать ваш веб-сервис недоступным для всех, вы просто используете примитивное отключение сервера, когда слишком много нагрузки, это позволит принимать некоторые запросы и отвергать другие. Данная функция не будет работать на Windows.
pack() – я использую данную функцию довольно часто, чтобы выполнить преобразование 32-байтовых шестнадцатеричных строк, возвращаемых функцией md5() в 16-байтовые двоичные строки.
$pass_hash = pack("H*", md5("my-password")); $pass_hash = md5("my-password", true); // эквивалент (PHP 5+)
Функция очень полезна для хранения информации в базах данных, чтобы сэкономить пространство. (В случае упаковки шестнадцатеричных значений в двоичные строки)
cal_days_in_month() – возвращает количество дней в текущем месяце.
$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31 echo ( $days - date("d") + 1 ) . " days until " . date("F", mktime(0, 0, 0, date("m") + 1, 1, 1970));
_() – если вы разрабатывали модули для WordPress, то знаете о функциях _() и _e () для интернационализации программ. Вы можете использовать gettext() (или _(), которая является псевдонимом), а также некоторые другие функции, для достижения той же функциональности, в WordPress или других приложениях. Данный пример был взят из Руководства PHP:
// Установить немецкий язык setlocale(LC_ALL, 'de_DE'); // Указать расположение таблиц перевода bindtextdomain("myPHPApp", "./locale"); // Выбрать домен textdomain("myPHPApp"); echo _("Have a nice day");
Вам нужно будет скомпилировать PHP с поддержкой GNU gettext.
get_browser() – было бы неплохо выяснить тип браузера пользователя. Это можно сделать с помощью функции get_browser(). Для этого понадобится указать правильное расположение browscap.ini в директиве browsercap файла php.ini. Вы могли бы написать следующий код:
$browser = get_browser(null, true); if(!$browser["frames"] || !$browser["cookies"]) echo "Скачайте последнюю версию браузера. Некоторые разделы сайта могут быть недоступны.";
Функция не сможет определить индивидуальные настройки браузеров, но её можно использовать, чтобы узнать, включен ли Javascript, например. Это может быть полезным для обработки пользователей – то есть, какой браузер и платформу они используют.
debug_print_backtrace() – проследить работу кода вручную может быть довольно трудно, особенно при поиске логической ошибки, в конце концов, вы же написали логику! Функция debug_print_backtrace() может вывести вас из трудной ситуации. Далее функция используется, чтобы понять работу довольно бессмысленного сценария:
$r = 0; function iterate() { global $r; if( $r < 20 ) recur(); echo $r . ", "; } function recur() { global $r; $r++; // how did I get here? echo " "; debug_print_backtrace(); if( $r < 20 ) iterate(); } iterate();
# ВЫВОД:
#0 recur() called at [C:htdocsphp_stuffindex.php:8]
#1 iterate() called at [C:htdocsphp_stuffindex.php:25]
#0 recur() called at [C:htdocsphp_stuffindex.php:8]
#1 iterate() called at [C:htdocsphp_stuffindex.php:21]
#2 recur() called at [C:htdocsphp_stuffindex.php:8]
#3 iterate() called at [C:htdocsphp_stuffindex.php:25]
#0 recur() called at [C:htdocsphp_stuffindex.php:8]
#1 iterate() called at [C:htdocsphp_stuffindex.php:21]
#2 recur() called at [C:htdocsphp_stuffindex.php:8]
#3 iterate() called at [C:htdocsphp_stuffindex.php:21]
#4 recur() called at [C:htdocsphp_stuffindex.php:8]
#5 iterate() called at [C:htdocsphp_stuffindex.php:25]
metaphone() – данная функция возвращает одинаковый ключ для слов с одинаковым звучанием. Функция soundex() делает то же самое, но с меньшей точностью.
echo metaphone("train") . " "; // TRN echo metaphone("terrain") . " "; // TRN echo metaphone("not a train") . " "; // NTTRN echo soundex("train") . " "; // T650 echo soundex("terrain") . " "; // T650 echo soundex("not a train"); // N336
natsort() – это функция, которая сортирует элементы массива в естественном порядке (т.е. в порядке, который кажется логическим для человека), а не по порядковым значениям символов. Возьмем для примера:
$items = array( "100 apples", "5 apples", "110 apples", "55 apples" ); // обычная сортировка: sort($items); print_r($items); # Выводит: # Array # ( # [0] => 100 apples # [1] => 110 apples # [2] => 5 apples # [3] => 55 apples # ) natsort($items); print_r($items); # Выводит: # Array # ( # [2] => 5 apples # [3] => 55 apples # [0] => 100 apples # [1] => 110 apples # )
levenshtein() – данная функция сообщает насколько “далеко” два слова находятся друг от друга. Функция возвращает минимальное количество операций вставки, замены или удаления, которые понадобятся для преобразования одной строки в другую. Рассмотрим следующий код:
$dictionary = array( "php", "javascript", "css" ); $word = "japhp"; $best_match = $dictionary[0]; $match_value = levenshtein($dictionary[0], $word); foreach($dictionary as $w) { $value = levenshtein($word, $w); if( $value < $match_value ) { $best_match = $w; $match_value = $value; } } echo "Вы имели в виду категорию '$best_match' ?";
В данном случае пользователю было предложено предоставить имя категории. Он вводит значение «japhp», которое является недействительным. Так как это, скорее всего, опечатка, приведенный выше код сделает предложение («Вы имели в виду категорию ‘php’ ?»).
glob() – заставит вас чувствовать себя по дурацки после использования функций opendir (), readdir () и closedir (), для поиска файла. С помощью glob() это просто:
foreach (glob("*.php") as $file) echo "$filen";
Еще?
Есть еще множество функций. Если вам не достаточно то, http_build_query (), register_shutdown_function (), и pspell_suggest также стоят того, чтобы их упомянуть. А какая функция оказалась для Вас приятным открытием?
Кстати, очень интересно:
Данный блог создан с целью помочь, как начинающему вебмастеру, так и опытному разработчику, в решении проблем возникающих при разработке сайтов. Здесь Вы прочитаете полезные статьи о том, как грамотно произвести SEO оптимизацию своего сайта, и найдёте важные исследования в сфере интернет-маркетинга. Научитесь писать собственные компоненты и модули для известных CMS, а также узнаете интересные методы работы с Фреймворками, CSS, HTML, jQuery и PHP. Из записей блога вы поймёте как грамотно разрабатывать макеты сайтов и что такое валидная вёрстка. БЛОГZOR – поможет Вам стать web-Гуру и понять тонкости веб-мастеринга.
Комментариев к записи: 3
16 Август 2011 в 3:42 пп
24 Март 2015 в 4:03 пп
fitflop台灣
30 Июнь 2015 в 11:54 пп
toms singapore outlet