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

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

Читайте также:  Всегда ли выполняется блок finally java

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

var_dump ( str_contains ( «foobar» , null ));
// «Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated» начиная с PHP 8.1.0
// bool(true)
?>

Смотрите также

Источник

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