Первое знакомство с функциями 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 всего лишь ложка меда из огромной бочки волшебства этого языка. Самые вкусные функции распробуйте самостоятельно.
Function в 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 */
function bar ()
echo «Я существую сразу с начала старта программы.\n» ;
>
Пример #3 Вложенные функции
function foo ()
function bar ()
echo «Я не существую пока не будет вызвана foo().\n» ;
>
>
?php
/* Мы пока не можем обратиться к bar(),
поскольку она ещё не определена. */
/* Теперь мы можем вызвать функцию bar(),
обработка foo() сделала её доступной. */
Все функции и классы PHP имеют глобальную область видимости — они могут быть вызваны вне функции, даже если были определены внутри и наоборот.
PHP не поддерживает перегрузку функции, также отсутствует возможность переопределить или удалить объявленную ранее функцию.
Замечание: Имена функций регистронезависимы для символов ASCII от A до Z , тем не менее, предпочтительнее вызывать функции так, как они были объявлены.
Функции PHP поддерживают как списки аргументов переменной длины, так и значения аргументов по умолчанию. Смотрите также описания функций func_num_args() , func_get_arg() и func_get_args() для более детальной информации.
Можно вызывать функции PHP рекурсивно.
Пример #4 Рекурсивные функции
Замечание: Рекурсивный вызов методов/процедур с глубиной более 100-200 уровней рекурсии может вызвать переполнение стека и привести к аварийному завершению скрипта. В частности, бесконечная рекурсия будет считаться программной ошибкой.