Функции в PHP урок с примерами

Оглавление (нажмите, чтобы открыть):

Уроки PHP.

Урок 4. Функционируем?

Язык PHP, как и практически любой современный язык программирования, поддерживает функции. Функции отличаются от других конструкций языка «хвостом» на конце в виде скобок (), между которыми могут присутствовать некоторые аргументы.

В PHP существует два типа функций:

  • зарезервированные функции;
  • функции, определяемые пользователем.

С первым типом мы уже сталкивались, например, когда упоминали функцию print_r() . Эти функции уже заранее разработаны производителем, и мы можем беспрепятственно ими воспользоваться. Они имеют самое разнообразное применение: это и математические функции, и функции работы со строками, массивами, файлами, временем и так далее. Все эти функции вы можете посмотреть в Мануале PHP, либо с некоторыми наиболее используемыми функциями, переведенными на русский язык, вы можете познакомиться прямо на этом сайте.

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

Особенность этих функций состоит в том, что их необходимо определять, в отличие от зарезервированных функций.

Синтаксис определения таких функций в общем виде выглядит так:

function имя_функции ( аргумент1, аргумент2 и так далее )
<
некоторый операции, выполняемые при вызове функции ;
>

Имя функции — оригинальный идентификатор, может содержать все буквы латинского алфавита, числа и знак подчеркивания. Следите, чтобы имя вашей функции не совпадало с зарезервированной функцией PHP, иначе программа выведет ошибку. Заметьте, что имя функции, в отличие от имени переменной, нечувствительно к регистру.

Аргументами функций могут являться переменные и/или константы. Это те значения, которые будут использоваться командами в теле функции.

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

Использование функций, определенных пользователем, полностью идентично использованию зарезервированных функций.

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

function sum($a, $b)
<
$c = $a + $b;
echo «$a + $b = $c
«;
return $c;
>

Конструкция return аргумент заставляет данную функцию возвращать после своего выполнения значение аргумента. Посмотрим пример использования вышеуказанной функции:

$a = sum(12, 5);
echo $a;
/* этот код выведет
12 + 5 = 17
17
*/

В этом примере переменной $a присвоилось значение, возвращенное функцией sum (т.е. значение $c ). Если бы мы не указали в определении функции return $c , то пример выше вывел бы только 12 + 5 = 17.

Нужно учесть, что все переменные внутри функции являются локальными, действующими только в теле функции. Поэтому в примере выше не было ошибкой строчка $a = sum(12, 5) , где в функции sum уже есть своя переменная $a . Эти переменные никоем образом не пересекаются и имеют совершенно разное значение.

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

function word ($word)
//функция word() и переменная $word — совершенно разные вещи
<
global $string; //определение $string как глобальной
$string = $word.» — отличная вещь!»;
>
word («PHP»);
echo $string; //выведет «PHP — отличная вещь!»

Как видите, мы не применяли return , так что функция ничего не возвращает, но мы определили переменную $string как глобальную, поэтому она действует в пределах всего кода php, так что в данном случае $string в функции равна $string вне функции.

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

function mult ($a)
<
static $result=1; //определение $result как статичной
$result *= $a;
echo $result.’
‘;
>
for ($i=2; $i static , то пример вывел бы числа 2, 3 и 4.

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

function arr_count ($a, $b=3) /* значение по умолчанию должно указываться справа */
// такая запись: function arr_count ($b=3, $a) — будет работать неверно
<
global $array;
$result = $array[$a] + $array[$b];
return $result;
>
$array = array(2, 5, 4, 7, 2);
echo arr_count(2).» + «.arr_count(1, 4).» = «.(arr_count(2) + arr_count(1, 4));
// выведет
11 + 7 = 18

Функцию можно сделать значением переменной. Например, продолжаем пример выше:

Уроки PHP. Урок 1. Основные понятия PHP

В этом уроке PHP рассматриваются базовые понятия языка: включение конструкций php в html-страницу, основные управляющие конструкции php.

1. Вызов файла с сервера

Прежде чем приступить к уроками PHP проверьте работоспособность Денвера на Вашем компьютере. Как установить Денвер, читайте в статье Серверные технологии. Установка Денвер.

1. Запустите Денвер, щелкнув по ярлыку (рис. 2.1).

После запуска на панели задач в правом нижнем углу должен появиться значок .

2. Запустите браузер. В адресной строке наберите https://localhost и нажмите Enter. В окне браузера должно появиться следующее (рис. 2.2).

Рисунок 2.2. Проверка работоспособности Денвера

3. Откройте Notepad++ и наберите следующий код:

4. Сохраните файл под именем upr_1.php на виртуальном сервере по адресу home/localhost/www/php_1 (создайте папку php_1 по этому адресу).

5. В адресной строке браузера введите адрес https://localhost/php_1/upr_1.php и нажмите Enter. Результат на рис. 2.3.

Языковые конструкции echo и print

Очень часто встречающимися конструкциями языка php являются echo и print.

  1. echo
    • обычный текст и теги заключается в двойные или одинарные кавычки
    • при выводе имен переменных использовать кавычки необязательно.
  2. print
    • текст и переменные заключаются в круглые скобки и кавычки.
  3. Переменная начинается со знака $. Значение строковой переменной заключается в кавычки, значение числовой переменной – без кавычек.
  4. Возможно использовать одинарные кавычки – тогда все, что написано внутри (кроме тегов HTML), будет интерпретироваться, как обычный текст, в том числе и переменные.
  5. Возможно «склеивание» строк (конкатенация) – для этого используется точка.
  6. При использовании кавычек в тегах HTML перед кавычками необходимо поста-вить обратный слэш \
  7. Однострочные комментарии начинаются со знаков //
  8. Многострочные комментарии заключаются между знаками /* */

2. Работа с текстом

В наших уроках PHP мы изучим работу с текстом.

1. Проанализируйте код, приведенный ниже. Наберите его в Notepad++ и сохраните его на виртуальном сервере под именем upr_2.php в папке php_1.

2. В адресной строке браузера введите адрес https://localhost/php_1/upr_2.php и нажмите Enter. Результат на рис. 2.4.

3. Операции с числами

В данном уроке PHP рассмотрим работу с числами.

1. Проанализируйте код, приведенный ниже. Наберите его в Notepad++ и сохраните его на виртуальном сервере под именем upr_3.php в папке php_1.

2. Запустите файл через виртуальный сервер. Результат на рис. 2.5.

3. Осуществите тот же самый код через конкатенацию. Подсказка: в этом случае суммы, разницы, произведения и т.д., т.е. последовательность арифметический операций, должны быть заключены в скобки, например, print («$x + $y = «.($x+$y).»

4. Чтение данных из файла. Функция readfile

В уроках PHP всегда рассматриваются различные функции, начнем с функции readfile.

1. Создайте текстовый файл, приведенный ниже, и сохраните в папку php_1 под именем tezis.txt

2. Создайте код, приведенный ниже, и сохраните под именем upr_4.php в той же папке, что и файл tezis.txt

3. Запустите файл через виртуальный сервер. Результат на рис. 2.6. Проанализируйте результат. Ответьте на вопрос «Что осуществляется функцией readfile»?

5. Функция случайного выбора rand

Следующая функция в наших уроках PHP — функция rand.

1. Для создания случайного числа в каком-либо диапазоне используется функция rand. В данном примере диапазон – от одного до шести.

2. В папке php_1 создайте папку if_else и скопируйте в нее изображения pic1.jpg, pic2.jpg, pic3.jpg, pic4.jpg, pic5.jpg, pic61.jpg. Все материалы к теме Основы PHP Вы можете скачать вверху этой страницы.

3. Реализуйте код, приведенный ниже, сохраните в папку if_else под именем upr_rand.php.

4. Проверьте работоспособность кода через виртуальный сервер. Результат на рис. 2.7 (номер рисунка может быть любой из шести).

6. Организация ветвления. Оператор if

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

1. Сохраните файл upr_rand.php под новым именем upr_rand_if.php Измените код файла upr_rand_if.php как показано ниже.

2. Проверьте работоспособность. При выпадении изображения 1, должно появляться сообщение красным цветом Вам полагается приз. (рис. 2.8).

7. Организация ветвления. Оператор else

Изменим исполнение предыдущей программы upr_rand_if.php таким образом, чтобы при выпадении изображения 1 появлялось сообщение Вам полагается приз. При всех остальных изображениях должно быть сообщение Вы ничего не выиграли…

1. Сохраните файл upr_rand_if.php под новым имененм upr_rand_else.php. В новом файле upr_rand_else.php измените код как показано ниже.

2. Проверьте работу программы через виртуальный сервер (рис. 2.9).

8. Организация ветвления. Операторы if else

Изменим условие задачи следующим образом. При выпадении изображения 1, появляется сообщение Вы выиграли $1! При выпадении изображения 2, появляется сообщение Вы выиграли $2! и так далее.

1. Сохраните файл upr_rand_else.php под новым имененм upr_rand_ifelse.php. Проанализируйте код, приведенный ниже, и реализуйте его в upr_rand_ifelse.php.

2. Проверьте работу программы. Результат на рис. 2.10

Урок PHP для начинающих

Внизу просто список тем, которые желательно знать при изучении PHP.

Переменные.

  • Что такое переменная. Синтаксис имён переменных.
  • Динамические переменные в PHP ($$r, $r=’user’, $ <$r>).
  • Ссылки на переменные в PHP ($r=&$t)
  • Типы данных в PHP. Функции gettype() и settype().
  • Временное преобразование типа переменной.
  • isset() — проверяет наличие переменной.
  • unset() — удаляет переменную.
  • Операторы и выражения.
  • Константы в PHP.
  • Предопределённые константы (__FILE__, __LINE__, PHP_VERSION).
  • Функции var_dump() и var_export().
  • Функция print_r().

Управление потоком.

  • Условные инструкции.
    • if / elseif / else
    • switch / default
    • оператор «?»
  • Циклы.
    • while()<>
    • do<> while()
    • for<>
  • Прерывание цикла: break.
  • Прерывание итерации: continue.

Функции.

  • Создание функции: function
  • Возврат значения: return.
  • Область видимости переменных.
  • Инструкции global и static.
  • Передача аргумента по ссылке.

Массивы в PHP.

Основная страница урока: массивы в PHP.

  • Создание массива. Функция array().
  • Другие способы создания массива.
  • Ассоциированные массивы.
  • Многомерные массивы.
  • Размер массива, функция count().
  • Просмотр массива, цикл foreach.
  • Функция is_array().
  • array_merge().
  • array_push().
  • array_shift().
  • array_slice().
  • Сортировка массивов, функции sort() и rsort().
  • Сортировка ассоциированных массивов: asort() и ksort().

Объекты.

  • Сделаю позже.

Работа с формами.

  • Глава содержит ошибки.
  • Функция: urlencode() — URL-кодирование строки.
  • Функция: urldecode() — обрастная операция.

Работа с файлами.

  • Всавка файла: функции include (return) и require
  • file_exists()
  • Файл или каталог:
    • is_file()
    • is_dir
  • Проверка статуса файла:
    • is_readable()
    • is_writable()
    • is_executable()
  • Размер файла: filesize().
  • Время файла:
    • Обращение к файлу: fileatime()
    • Изменение файла: filemtime()
  • Создание файла: touch().
  • Удаление файла: unlink().
  • Открытие файла: fopen(), 3 режима, указатель на файл.
    • Смещение: fseek(), параметр SEEK_END.
    • Чтение строки: fgets();
    • Чтение символов: fread();
    • Чтение символа: fgetc();
    • Проверка конца файла: feof();
    • Запись в файл: fwrite() или fputs().
    • Константа PHP_EOL — конец строки на данной платформе.
    • Блокировка файла: flock(). Три режима блокировки.
  • Закрытие файла fclose().
  • Создание каталога: mkdir().
  • Удаление каталога: rmdir();
    • Открытие каталога: opendir(), указатель каталога.
    • Чтение каталога readdir().
    • Закрытие каталога: closedir().

Связь с базами данных на примере MySQL.

Статья урока 1 по MySQL: Основы PHP и MySQL.

Статья урока 2 по MySQL: Запросы MySQL.

  • Подключение к серверу MySQL: mysqli_connect() — возвращает объект, представляющий подключение к серверу MySQL.
    • mysqli_connect_errno() — возвращает код ошибки последней попытки соединения. При отсутствие ошибок выводит 0.
    • mysqli_connect_error() — возвращает описание последней ошибки подключения.
    • mysqli_get_host_info() — возвращает строку, содержащую тип используемого соединения.
  • mysqli_select_db() — устанавливает базу данных для выполняемых запросов.
  • Отправка запроса к серверу MySQL: mysqli_query().
  • Функции работы с результатом:
    • mysqli_fetch_row()
    • mysqli_fetch_assoc()
    • mysqli_fetch_array()
    • mysqli_fetch_object()
  • Список баз данный: mysql_list_dbs() — устарела в PHP 5.4.0. SQL запрос: «SHOW DATABASES».
  • Список таблиц: mysql_list_tables() — устарела в PHP 4.3.0 и уже выдаёт сообщение. SQL запрос: SHOW TABLES FROM sometable
  • Проверка изменения данных: mysqli_affected_rows().
  • Безопасность SQL-запроса: mysqli_real_escape_string().
    • Функция get_magic_quotes_gpc() — получает текущую активную установку конфигурации «магических» кавычек gpc.
    • Функция stripslashes() — удаляет экранирование символов.
  • Отключение от сервера: mysqli_close().

Работа с датами.

  • Функция time().
  • Момент time stamp.
  • Функция getdate() — возвращает ассоциированный массив.
  • Функция date() — форматирует вывод системной даты/времени по установленным шаблонам.
  • Функция gmdate() — аналог date() в формате GMT.
  • Функция mktime() — получение абсолютного времени (time stamp) из даты.
  • Функция checkdate() — проверка даты.
  • Функция strtotime() — преобразует текстовое представление даты на английском языке в метку времени Unix.
  • Практика: создай календарь.

Работа с данными.

  • Проверка типов:
    • is_array()
    • is_bool()
    • is_double() — псевдоним is_real(), is_float()
    • is_int() — псевдоним is_integer(), is_long()
    • is_object()
    • is_srting()
    • is_numeric() — проверяет, является ли переменная числом или строкой, содержащей число
  • Ещё функции изменения типа данных
    • srtval() — возвращает строковое значение переменной
    • intval() — возвращает целое значение переменной
    • doubleval() — псевдоним floatval() — возвращает значение переменной в виде числа с плавающей точкой.
  • Функция isset();
  • Функция empty() — проверяет, считается ли переменная пустой. Переменная считается пустой, если она не существует или её значение равно FALSE.
  • Функция get_defined_vars() — возвращает массив всех определенных переменных
  • Устаревшая сортировка массивов:
    • Функция each().
    • Фзыковая конструкция, не функция, как и array(), — list().
    • Функция reset().
  • Функция in_array() — проверка наличия значения в массиве.
  • Функция unset() — удаление элемента массива или переменной.
  • array_walk() — применяет заданную пользователем функцию к каждому элементу массива
  • Нестандартная сортировка массива:
    • Функция usort().
    • Функция uasort().
    • Функция uksort().

Работа со строками.

  • Функция printf()
    • Строка управления.
    • Определить преобразования.
    • Определитель типа.
    • Определение ширины поля.
    • Задание точности.
  • Функция sprintf().
  • Функция srtlen() — длина строки.
  • Функция strstr() — нахождение подстроки.
  • Функция strpos() — позиция подстроки.
  • Функция substr() — вырезает подстроку.
  • Функция strtok() — разметка строки, сложная и ненужная функция.
  • Очестка строки:
    • Функция trim().
    • Функция chop().
    • Функция ltrim().
  • Функция substr_replace().
  • Функция str_replace().
  • Функция explode().
  • Изменение регистра:
    • Функция strtoupper().
    • Функция strtolower(). Может не работать, тогда mb_strtolower().
    • Функция ucwords() — делает заглавными первые букву всех слов в строке.
    • Функция ucfirst() — делает заглавной первую букву строки.

Cookie, сессии и аутентификация

Эту тему нужно изучать только по книге «PHP, MySQL и JavaScript», там нормальная информация.

    Файлы cookie:
  • Функция setcookie().
  • Удаление cookie.
    HTTP-аутентификация:
  • Заголовок HTTP-аутентификации.
  • Переменные $_SERVER[PHP_AUTH_USER] и $_SERVER[PHP_AUTH_PW].

PhpBuilder.ru

ваш путеводитель по веб программированию

Главное меню

Уроки по PHP

Урок 21. Вызов php функций

После определения php функция никак не влияет на программу, так как для этого к ней еще нужно обратиться. Для вызова функции нужно написать ее имя и круглые скобки. Если у функции есть аргументы, они записываются в этих скобках. Рассмотрим пример определения и вызова функциии my_cube():

Итак, давайте рассмотрим, что именно делает данная функция и что будет после ее вызова.

Функция my_cube() возводит число в куб и выводит результат на экран браузера с помощью echo.

В нашем примере мы передали в функцию аргумент 100, который заменил параметр $number. Для множества математических операций в php есть специальные встроенные функции, которые не нужно определять. Например, квадратный корень числа можно вычислить с помощью встроенной функции sqrt().

Рассмотрим более развернутый пример с функцией my_cube():

Как видим в примере , функция my_cube() в коде определена, а вот функция pow() – нет (она уже встроена в ядро языка php). В следующих уроках по php можно будет более детально ознакомится со встроенными математическими функциями. Полную информацию можно найти в официальной документации по php.

Обратите внимание, функциям также можно задавать «параметры по умолчанию». Если, например, программисту известно, что в большинстве случаев при обращении к функции будет передаваться аргумент 100, то его не нужно передавать постоянно. Вместо этого при определении функции нужно указать параметры следующим образом:

Теперь при вызове функции my_cube() без параметров, значение параметра $number будет по умолчанию равняться 100. Если же в качестве аргумента будет передано другое значение, то $number примет его. Для закрепления материала рассмотрим пример:

Также нужно запомнить, что параметры по умолчанию и обыкновенные параметры можно сочетать при определении 1 функции.

9 PHP функций, которые нужно знать всем

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

1. Создание функций с переменным числом аргументов

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

Но для начала, вспомним как мы создаём функции обычным образом:

Теперь посмотрим на то, как можно написать функцию с неограниченным количеством аргументов. Для этого будет использовать метод func_get_args():

2. Используем Glob() для поиска файлов

Часто названия функций говорят сами за себя. Такого нельзя сказать о функции glob().

Если не вдаваться в подробности, её функциональность схожа с методом scandir(). Она позволяет найти необходимый файл по шаблону:

Для нахождения файлов нескольких типов надо писать так:

Так же можно в шаблоне указать путь:

Для того чтобы получить полный путь к документу используйте метод realpath():

3. Информация об используемой памяти

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

В PHP существует мощный инструмент отслеживания используемой памяти. В разных частях скрипта нагрузки могут быть разные. Для того чтобы получить значение используемой памяти в данный момент, нам следует использовать метод memory_get_usage(). Для фиксации максимального количества используемой памяти используем memory_get_peak_usage()

4. Информация о процессоре

Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.

Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:

  • ru_oublock: количество операций блочной записи
  • ru_inblock: количество операций блочного чтения
  • ru_msgsnd: количество отправленных сообщений
  • ru_msgrcv: количество принятых сообщений
  • ru_maxrss: максимальный размер невыгружаемого набора
  • ru_ixrss: общий объем разделяемой памяти
  • ru_ >Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.

Запутанно как-то. Вот пример:

Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.

Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.

Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:

Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.

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

5. Магические константы

В PHP существует множество магических констант, таких как номер текущей строки (__LINE__), путь к файлу (__FILE__), путь к каталогу (__DIR__), имя функции (__FUNCTION__), имя класса (__CLASS__), имя метода (__METHOD__) и пространства имён (__NAMESPACE__).

Все мы их рассматривать не будем. Посмотрим только лишь парочку:

Используйте __LINE__ при отладке скриптов:

6. Генерирование уникальных >Бывают такие моменты, когда вам надо сгенерировать уникальную строку. Множество раз я видел, что для решения этой задачи используют функцию md5():

Но на самом деле для этих целей в PHP есть специальная функция uniqid()

Невооружённым взглядом можно заметить, что первые символы мягко говоря схожи… Так происходит из-за того, что данный метод использует время сервера для генерации символов. Это даже полезно, т.к. все сгенерированные значения получаются в алфавитном порядке, что даёт возможность быстро их сортировать.

Для того чтобы уменьшить шансы получения дубликата, мы можем добавить префикс или использовать второй параметр (увеличит количество символов):

Этот метод генерирует строки размером меньше, чем md5, тем самым вы сможете сэкономить место.

7. Сериализация

Вам когда-нибудь приходилось хранить комплексные данные в базе или в файле? Для того чтобы сконвертировать объект в строку в PHP предусмотрена специальная функция.

Вообще говоря, этих методов 2: serialize() и unserialize()

Вот так вот работают эти функции. Однако из-за бурного роста популярности JSON, в PHP 5.2 были добавлены 2 метода json_encode() и json_decode(). Их работа схожа с serialize():

Этот вариант более компактный и совместимый с другими языками, такими как JavaScript. Однако при работе с очень навороченными объектами может возникнуть потеря данных.

8. Сжатие строк

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

В следующем примере продемонстрируем работу функций gzcompress() и gzuncompress():

В наших силах уменьшить объём текста на 50%. В этих же целях можно использовать методы gzencode() и gzdecode(), которые используют другой алгоритм сжатия.

9. Выполнить перед завершением

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

Допустим, вы хотите узнать какую-то информацию… Время работы скрипта:

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

При использовании метода register_shutdown_function() код выполнится в любом случае:

Вывод

PHP это целая планета, которая не перестаёт нас удивлять своим содержимым. А что думаете вы о данных функциях?

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com/tutorials/php/9-useful-php-functions-and-features-you-need-to-know/
Перевел: Станислав Протасевич
Урок создан: 4 Марта 2011
Просмотров: 86831
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

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

PHP — Функции

Дата публикации: 2020-10-20

От автора: функции PHP похожи на функции других языков программирования. Функция представляет собой фрагмент кода, который принимает другой код в качестве параметра, выполняет определенную обработку и возвращает значение.

Мы уже рассмотрели много таких функций, например fopen() и fread() и т.д. Это встроенные функции, но PHP предоставляет нам возможность создавать собственные функции. Вы должны четко понимать, что существуют два отдельных аспекта:

Создание функции PHP

Вызов функции PHP

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

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Создание функции PHP

Собственную PHP-функцию создать очень просто. Предположим, вы хотите создать функцию PHP, которая просто выводит в браузере короткое сообщение, когда вы ее вызываете. В следующем примере мы создаем функцию writeMessage(), а затем вызывает ее сразу после создания.

Обратите внимание, что при создании функции ее имя должно начинаться с ключевого слова function, и весь код PHP должен быть помещен внутри скобок < >, как в приведенном ниже примере:

Функции в PHP: урок с примерами

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

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

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

Имена функций следуют тем же правилам, что и другие метки в PHP. Корректное имя функции начинается с буквы или знака подчеркивания, за которым следует любое количество букв, цифр или знаков подчеркивания. В качестве регулярного выражения оно может быть выражено так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$ .

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

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

Пример #2 Функции, зависящие от условий

/* Мы не можем вызвать функцию foo() в этом месте,
поскольку она еще не определена, но мы можем
обратиться к bar() */

if ( $makefoo ) <
function foo ()
<
echo «Я не существую до тех пор, пока выполнение программы меня не достигнет.\n» ;
>
>

/* Теперь мы благополучно можем вызывать foo(),
поскольку $makefoo была интерпретирована как true */

if ( $makefoo ) foo ();

function bar ()
<
echo «Я существую сразу с начала старта программы.\n» ;
>

Пример #3 Вложенные функции

function foo ()
<
function bar ()
<
echo «Я не существую пока не будет вызвана foo().\n» ;
>
>

/* Мы пока не можем обратиться к bar(),
поскольку она еще не определена. */

/* Теперь мы можем вызвать функцию bar(),
обработка foo() сделала ее доступной. */

Все функции и классы PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот.

PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.

Замечание: Имена функций регистронезависимы, тем не менее, более предпочтительно вызывать функции так, как они были объявлены.

Функции PHP поддерживают как списки аргументов переменной длины, так и значения аргументов по умолчанию. Смотрите также описания функций func_num_args() , func_get_arg() и func_get_args() для более детальной информации.

Можно вызывать функции PHP рекурсивно.

Пример #4 Рекурсивные функции

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

Пользовательские функции в PHP

PHP позволяет разработчикам создавать собственные функции.

Создание функций

Создание функции выглядит следующим образом:

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

Заметьте, функция выполняется только при её вызове. Если убрать из примера выше строку message(); , то функция не запустится.

Аргументы функций

Функция может принимать значения от пользователя:

В примере выше мы передаём функции 2 значения. Функция помещает их в переменные $v1 и $v2 , после чего мы можем их обрабатывать.

Получение значения из функции

Функции редко пишутся для вывода информации на экран, гораздо чаще их задача — обработка данных и возвращение результата.

Получить результат вычислений функции можно с помощью оператора return :

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

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

Значения по-умолчанию

Вы можете указать значение по-умолчанию для переменной:

В примере выше мы указываем, что если 2-ой параметр не передан, то переменная получит значение 2 .

Типы аргументов

В PHP 7 появилась полноценная поддержка так называемых тайп хинтов (type hints). Мы можем указать, какой тип данных должен быть у передаваемого в функцию значения:

Если мы передадим в функцию значение, которое можно привести к требуемому типу (например, вместо строки передадим число), значение будет приведено к нужному типу. Если значение привести нельзя (например, массив нельзя превратить в строку), произойдёт ошибка:

Тип возвращаемого значения

Ещё одна фишка PHP 7 — возможность указать, какой тип данных должна возвращать функция. Если возможно, возвращаемое значение будет приведено к нужному типу, иначе мы получим ошибку. Пример:

PHP скрипты

Apache

PHP Скрипты

Для Дизайна Сайта

Куда обратиться с жалобой на управляющую компанию. | Кредит онлайн на карту украина с плохой кредитной историей nakartu.com.ua.

Поиск по Сайту

Самоучитель. Книги.

7.1: Функции в PHP

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

Функция — это предмет целой исторической эпохи в программировании. Когда-то давнымдавно программы представляли собой машинный код, с которым работал непосредственно процессор. Но человек постоянно пытался научить машину «говорить» с ним на одном языке. В результате непонятные для нас нолики и единички стали превращаться в команды, выполняющие одно действие. Но на этом развитие языков программирования не закончилось, так как с увеличением сложности решаемых задач количество команд возрастало в геометрической прогрессии. Для решения этой проблемы программисты создали структуру, с помощью которой можно было выделить блок команд и обозначить их определенным именем. Ее назвали процедурой. Это нововведение позволило резко сократить код программ и сделало его более понятным. Именно с этого момента начинается эпоха процедурного программирования. Дальнейшее развитие привело к тому, что у процедур появились входные параметры, которые назвали аргументами. И наконец, появились функции, отличающиеся от процедур тем, что они могли не просто выполнять определенные действия, но и возвращать значения.

Тем не менее в РНР нет понятия процедуры. Вне зависимости есть ли возвращаемое значение или его нет, мы имеем дело с функцией (function).

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

Простые примеры php

Несомненно, php поднял развитие сайтов на новый уровень, я уже не могу себе представить свои проекты без php. Вспоминаю как раньше я делал сайты на html и ужасаюсь, хватало же терпения редактировать постоянно одни и те же элементы ради хоть какого-то изменения сайта.

Эта статья для тех, кто до сих пор делает сайты на html, тут я покажу несколько полезных и простых примеров на php, чтобы показать что вы теряете. Статья также будет хорошей шпаргалкой для тех, кто уже начал изучать программирование на php.

Я постараюсь преподнести вам эти примеры в порядке возрастания их сложности.

Какая версия php у меня установлена

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

Посмотрите пример вывода информации данной функции, чтобы вывести подобное на своём сайте, создайте страницу с расширением .php и вставьте туда следующий код:

Время на сайте (сервере)

С помощью php легко узнать текущее время на сервере, например, во время загрузки на сервере было 23:35:57 10.11.2020, но в отличии от javascript это время не меняется онлайн, т.е. отображается то время, которое было на сервере в момент загрузки данной страницы.

Чтобы вывести дату на сайте нужно воспользоваться функцией date().

Маленькая хитрость: обычно в конце страницы ставят копирайт так Copyright © Computerlessons.ru, 2007 — 2020. Обратите внимание на вторую дату, она выводится с помощью php и в этом случае не нужно каждый год вручную подправлять число.

Как определить IP-посетителя

При написании скрипта для добавления комментариев неплохо бы кроме вводимых пользователем данных писать в базу данных ещё и его IP-адрес, мало ли пригодится. Узнать IP адрес пользователя можно с помощью функции getenv(‘REMOTE_ADDR’)

Ваш IP: 188.64.174.135

Вычисляем время выполения php-скрипта (загрузки страницы)

При программировании на php немаловажно уделить внимание скорости загрузки срипта. Слишком долго выполняющиеся скрипты могут сильно грузить сервер, при высокой посещаемости ресурса будут происходить сбои всего сайта из-за таких скриптов. Чтобы узнать сколько времени работает скрипт (грузится страница), воспользуйтесь таким примером php-кода:

( ‘ST_T’ , microtime ()); //начало

Контент страницы, скрипты и т.п.

printf ( ‘Страница сгенерирована за %.5f сек.’ , microtime ()- ST_T ); //конец
?>

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

Подсветка php-кода

Вы наверное уже обратили внимание, что на этой странице я привожу примеры php-кодов в цветном варианте. Цветной код удобно читать, нежели чёрно-белый. Например, я мог бы показывать вам коды так:

Но всё же согласитесь, цветной код лучше! Выше я привожу вам пример функции highlight_file(), с её помощью можно выводить на страницу php-код из другого файла. Ниже посмотрите функцию highlight_string(), где можно раскрашивать код непосредственно на странице.

Маленькая поправочка: следите за ковычками внутри этих функций, если используете двойную ковычку «, то внутри используйте только одинарные ‘, если нужно использовать двойную ковычку, то её необходимо экранировать обратным слешем \». То же касается и одинарыных ковычек.

php-скрипт случайных чисел

При написании скриптов случается нужно сгенерировать случайное число, это можно сделать при помощи функции rand().

В данном случае будет генерироваться случайное число от 1 до 100.

Список файлов из папки

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

Вот вам пример работы этого скрипта:

Это файлы из папки с примерами к этой статье.

Какой размер файла

Если нужно узнать размер файла, например картинки, то воспользуемся функцией filesize(), она покажет нам размер файла в байтах.

Скачать файл скриптом

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

Если обратиться к файлу с таким скриптом, то начнётся скачивание файла file.zip из папки folder, но пользователь никогда не узнает из какой же папки происходит скачивание, а значит и не узнает его истиного пути, в нашем случае это https://сайт.ру/folder/file.zip

Вот вам живой пример, ссылка ведёт на страницу /lessons/php/14/load.html, но будет скачиваться файл, откуда, попробуйте догадаться.

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

Транслитерация слов с помощью php

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

Пример работы скрипта можно посмотреть в моих сервисах.

Код вы сможете без труда изменить на своё усмотрение.

Сканируем чужие сайты

Вот уж где находка вора, с помощью функции file_get_contents() вы можете открывать на своих страницах чужие сайты.

Злоупотреблять этой функцией не нужно, иначе можно доиграться!

Адрес сайта

С помощью функции $_SERVER[‘HTTP_HOST’] можно сказать пользователю на каком сайте он находится или использовать для подставновки в своих скриптах.

Результат: Вы находитесь на сайте computerlessons.mega8.ru

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

Мастер Йода рекомендует:  Обзор графических библиотек C++
Добавить комментарий