Первое знакомство с функциями php для начинающих
Значение функций для программирования неоценимо. Благодаря им появилась возможность повторного использования кода. Нужно лишь разместить вызов функции в конкретном месте программы, и передать ей новые значения аргументов. Не являются исключением из правил и функции php .
Синтаксис функций в php
В каждом языке программирования работа с функциями имеет свои « тонкости ». Рассмотрим их особенности в php :
function имя_функции (параметры) < //тело функции >
Параметры могут быть пустыми. Имя указывается после обязательного слова function . При этом имена функций являются независимыми от регистра.
Это значит, что при объявлении function Main() и function main() подразумевается одна и та же функция. А при вызове одной из них интерпретатор выдаст сообщение об ошибке:
- В теле функции может находиться любой код. В том числе и определение другой функции. При этом определение может быть расположено в любом месте кода. То есть, в php имеет значение лишь расположение вызова функции;
- Функция может возвращать лишь одно значение, или ничего. Возврат более одного значения не возможен. При этом тип возвращаемого значения может быть любым.
function MyFunc () < $a=1; return $a; >echo MyFunc ();
В результате будет возвращена 1.
Множественную передачу значений можно осуществить при использовании в php массива в функции.
Пример:
function asq($a) < $x=$a*$a; $y=$a*$a*$a; return array($x,$y); >list($kvd,$kub)=$asq(15);
В теле функции задаются значения переменным x и y . Затем с помощью встроенной функции array() они записываются в массив.
Значение элементам массива задается при вызове функции с помощь list() .
имя_функции(аргумент 1, аргумент 2…аргумент n);
function MyFunc ($a,$b,$c=0) < $a=$b+$c; return $a; >echo MyFunc (0,1,2);
В коде сначала идет определение функции. В нем сразу происходит инициализация переменных, куда будут записываться передаваемые аргументам значения. В теле функции все аргументы складываются. Сумма всех значений записывается в переменную, а затем возвращается.
Анонимные функции в php
Анонимные функции в php появились недавно, начиная с версии 5.3 . В более ранних версиях языка их поддержка не была реализована.
Перед использованием анонимных функций убедитесь, что ваш интерпретатор поддерживает их. Для этого используйте встроенную функцию phpinfo(). После ее вызова в окне браузера отобразится вся информация о поддерживаемой версии php.
Анонимной называется функция, определение которой происходит без указания имени. То есть ее определение происходит в месте вызова. При создании анонимной функции к ней обращаются напрямую, или переменной присваивается ссылка на нее.
$func1 = function()< return 1; >; $x = $func1(); echo $x();
Здесь ссылка на анонимную функцию присваивается переменной func1 . Затем переменная x инициализируется значением func1 и выводится с помощью echo() :
$input = array(1, 2, 3, 4, 5); $output = array_filter($input, function ($v) < return $v >2; >);
В примере автономная функция function ($v) < return $v >2; > вызывается напрямую в месте определения. Она передается в качестве второго аргумента стандартной функции array_filter() .
Функция mail()
Набор стандартных ( встроенных ) функций в php довольно широк. Многие из них реализуют основные возможности веб-сферы.
Одной из таких является функция mail() . Она отправляет сообщение на указанный почтовый ящик. Ее синтаксис:
[bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])
Описание принимаемых параметров:
- to –адрес получателя письма. Должен соответствовать стандарту user@example.com ;
- subject – тема письма;
- message – отправляемое сообщение. При этом каждая строка сообщения должна вмещать в себя не более 70 символов. Строки разделяются символом перевода строки ( n ).
Если отправка письма происходит непосредственно на SMTP -сервер с машины на основе Windows , то все точки в конце каждой строки будут удалены. Во избежание этого следует заменить все одиночные точки на двойные с помощью кода:
$text = str_replace("n.", "n..", $text);
Необязательные параметры функции mail() :
- additional_headers – вставляется в конце заголовков отправляемого письма. Используется для добавления заголовков.
Пример отправки простого письма:
$message = "Line 1nLine 2nLine 3"; $message = wordwrap($message, 70); mail('caffeinated@example.com', 'My Subject', $message);
А вот пример полностью рабочей формы для отправки сообщений:
"; $message .= "E-mail пользователя: " . $_POST['user_email'] . "
"; $message .= "Текст письма: " . $_POST['text_comment']; send_mail($message); // отправим письмо // выведем сообщение об успехе $msg_box = "Сообщение успешно отправлено!"; >else< // если были ошибки, то выводим их $msg_box = ""; foreach($errors as $one_error)< $msg_box .= "$one_error
"; > > > // функция отправки письма function send_mail($message)< // почта, на которую придет письмо $mail_to = "my@mail.ru"; // тема письма $subject = "Письмо с обратной связи"; // заголовок письма $headers= "MIME-Version: 1.0rn"; $headers .= "Content-type: text/html; charset=utf-8rn"; // кодировка письма $headers .= "From: Тестовое письмо rn"; // от кого письмо // отправляем письмо mail($mail_to, $subject, $message, $headers); >
Несколько основных причин, почему письмо не отправляется:
- Письмо не содержит дополнительного заголовка From . Он устанавливается с помощью необязательного параметра additional_headers . Также он может быть выключен по умолчанию в конфигурационном файле php.ini . Если заголовок отсутствует в коде, то интерпретатор выдаст следующее сообщение:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing
- Используйте только LF (n) . Некоторые агенты на основе Unix автоматические заменяют LF на CRLF (rn) ;
- При реализации функции mail() на Windows адрес получателя не должен быть такого вида: Something someone@example.com.
Может произойти неправильная интерпретация параметра при передаче его почтовому агенту для отправки.
- Сбои в отправке писем могут возникнуть при размещении вызова mail() в теле цикла. Функция открывает и закрывает соединение с SMTP -сервером после отправки каждого письма.
Обзор стандартных функций php
В стандартный набор php входит большой комплект функций для работы со строками. Подробно рассмотрим несколько из них:
- 1) substr() – возвращает часть строки. Синтаксис: string substr(string string, int start[, int length]) , где:
- string string – заданная строка.
- int start – задает начало подстроки.
- int length – количество символов в возвращаемой подстроке.
$string = substr("Hello, world!", 6); echo ($string);
- 2) strpos() – возвращает позицию подстроки в заданной строке. С помощью необязательного параметра можно задать точку отсчета для поиска. Синтаксис: string strpos(string haystack, string needle[, int offset])
$string = strpos("Hello, world!", "world"); echo($string);
3) strstr() – возвращает подстроку из строки, начиная с указанного символа. Синтаксис: string
strstr(string haystack, string needle)
$url = "http://www.mail.ru"; $www = strstr($url,"m"); echo ($www);
Это лишь малая часть строковых функций, входящих в состав php. С остальными более подробно можно ознакомиться в документации по языку.
Функции работы с массивами:
1. count() – возвращает количество элементов в массиве. Синтаксис: int count(mixed var)
$a=array("Volvo","Kia","Ford"); echo count($a);
2. reset() – устанавливает указатель массива на первый элемент, возвращает его значение.
Синтаксис: reset(array array)
Пример:
3. sort() – сортирует массив по возрастанию. Функция воспринимает любой массив как список. Синтаксис: void sort(array array [, int sort_flags])
$fruits = array(«lemon», «orange», «banana», «apple»); sort($fruits); foreach ($fruits as $key => $val)
В языке PHP существует много функций для работы с датой и временем. Но функция date () в php является основной. Она возвращает строку, отформатированную согласно установленному шаблону format . Временная метка устанавливается аргументом timestamp . Ее синтаксис: string date ( string $format [, int $timestamp = time() ] )
echo date('l jS of F Y h:i:s A');
Более подробно обо всех принимаемых значениях аргументов функции можно узнать из документации к php.
Несколько стандартных математических функций:
1. bindec() – преобразует число двоичной системы исчисления в десятичное. Синтаксис: bindec ( string $binary_string )
2. floor() – округляет число до меньшего. Синтаксис: float floor (float $value )
3. rand() –генерирует случайное число из указанного диапазона. Синтаксис: int rand ( int $min , int $max )
Одна ложка меда из бочки
Описанные функции php всего лишь ложка меда из огромной бочки волшебства этого языка. Самые вкусные функции распробуйте самостоятельно.
Все стандартные функции php
В самом PHP содержится достаточно большое количество встроенных функций и языковых конструкций. Также есть функции, которые требуют, чтобы PHP был собран с определёнными модулями, в противном случае будут генерироваться фатальные ошибки, вызванные использованием неизвестной функции. Например, для того чтобы использовать функции для работы с изображениями, например, imagecreatetruecolor() , необходимо собрать PHP с поддержкой GD . Или же для того, чтобы воспользоваться функцией mysqli_connect() , необходима поддержка модуля MySQLi. Тем не менее, есть много встроенных функций, которые доступны всегда: например, функции обработки строк и функции для работы с переменными. Вызвав phpinfo() или get_loaded_extensions() , можно узнать, поддержка каких модулей есть в используемом PHP. Также следует учесть, что поддержка некоторых дополнительных модулей включена по умолчанию, и что сама документация к PHP разбита по модулям. Ознакомьтесь с разделами Конфигурация, Установка, а также с документацией непосредственно к дополнительным модулям для получения более детальной информации о том, как настроить PHP.
Более подробную информацию о том, как следует читать и интерпретировать прототипы функций, вы можете найти в разделе Как читать определения функции. Очень важно понимать, что возвращает функция, или как именно она модифицирует передаваемые аргументы. Например, функция str_replace() возвращает модифицированную строку, в то время как функция usort() работает с фактически переданной переменной. Каждая страница документации также содержит информацию, которая специфична для данной функции, например, информацию о передаваемых параметрах, изменениях в поведении, возвращаемых значениях в случае как удачного, так и неудачного выполнения, доступности функции в различных версиях. Знание и применение этих (порой даже незаметных) нюансов очень важно для написания корректного PHP-кода.
Замечание: Если в функцию передаются не те аргументы, которые она ожидает, например, массив ( array ) вместо строки ( string ), возвращаемое значение функции не определено. Скорее всего в этом случае будет возвращён null , но это просто соглашение, на него нельзя полагаться. Начиная с PHP 8.0.0, в этом случае должно быть выброшено исключение TypeError .
Замечание:
Скалярные типы для встроенных функций по умолчанию являются допускающими значение null в принудительном режиме. Начиная с PHP 8.1.0, передача null в параметр встроенной функции, который не объявлен как допускающий значение null , не рекомендуется и в принудительном режиме выдаётся уведомление об устаревании, чтобы соответствовать поведению пользовательских функций, где скалярные типы должны быть явно помечены как допускающие значение null .
Например, функция strlen() ожидает, что параметр $string будет строкой ( string ), не допускающей значение null . По историческим причинам PHP позволяет передавать null для этого параметра в принудительном режиме и параметр неявно приводится к строке ( string ), в результате чего получается значение «» . В строгом режиме выбрасывается исключение TypeError .
var_dump ( strlen ( null ));
// «Deprecated: Passing null to parameter #1 ($string) of type string is deprecated» начиная с PHP 8.1.0
// int(0)
?php
var_dump ( str_contains ( «foobar» , null ));
// «Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated» начиная с PHP 8.1.0
// bool(true)
?>