Обратная связь

Первое знакомство с функциями 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() они записываются в массив.

Читайте также:  Битрикс показать ошибки php

Значение элементам массива задается при вызове функции с помощь 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» ;
>
>

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

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

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

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

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

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

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

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

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

User Contributed Notes

Источник

Оцените статью