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

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

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

Есть две части, которые должны быть понятны вам -

  • Создание функции PHP
  • Вызов функции PHP

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

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

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

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

Вы действительно хороший человек, хорошо проводите время!

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

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

На этом отобразится следующий результат -

Сумма двух чисел: 30

Передача аргументов по ссылке

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

В следующем примере изображены оба случая.

На этом отобразится следующий результат -

Исходное значение - 10
Исходное значение - 16

Функции PHP, возвращающие значение

Функция может возвращать значение с помощью оператора return в сочетании со значением или объектом. return останавливает выполнение функции и отправляет значение обратно вызывающему коду.

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

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

На этом отобразится следующий результат -

Возвращаемое значение из функции: 30

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

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

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

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

Создаем свою первую php функцию

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

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

Вот как выглядит объявление функции myCompanyName:

Примечание : Название функции может начинаться со знака «_», но не с цифры!
Это лишь каркас нашей функции, а внутри него мы можем поместить любой код, который захотим. При вызове функции он будет выполняться. Видите в фигурных скобках в приведенном выше примере «{}»? Эти скобки определяют, где должен быть наш код функции. Открывающая фигурная скобка «{» говорит PHP, что код функции начинается, а закрывающая фигурная «}» говорит PHP, что наша функция окончена!

Давайте добавим в нее что-то простенькое, например .

Вот и все, довольно просто, правда? Теперь научимся вызывать нашу функцию.

Вызов готовой функции php

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

!
"; myCompanyName(); echo "Рад вас видеть!
";

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

  • Всегда начинайте ваши функции с ключевым словом function.
  • Помните, что ваш код функции должны быть между «{» и «}».
  • Когда вы вызываете функцию, убедитесь, что пишете ее имя правильно.

Функции с параметрами

Еще одна полезная возможность состоит в том, что функции вы можете вызывать с параметрами, то есть передавать внутрь ее кода дополнительную информацию. Наша первая функция myCompanyName не очень-то и полезна, потому что все что она умеет, это печатать одну и ту же строку.

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

"; } ?>

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

Возвращение значения функцией php

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

Как она возвращает значение? Лучше всего разобраться на примере. Объявим функцию с параметрами, а затем присвоим результат некоторой переменной, вот так:

"; $myNumber = mySum(3, 4); // Сохраняем результат вызова функции mySum в переменную $myNumber echo "После вызова функции, myNumber = " . $myNumber ."
"; ?>

Чтобы присвоить функции значение — в нее добавляется оператор return, видите его? Результат сложения двух чисел хранится в переменной $total, а с помощью return $total это значение передается самой функции. Затем мы просто присваиваем его переменной $myNumber после вызова функции mySum с двумя параметрами 3 и 4 (это числа которые следует сложить).

Практикуйтесь, разбирайтесь и у вас все получится!

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

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

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

    Примечание: имена функций не чувствительны к регистру букв.

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

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

Function имя_функции([параметры]) { блок кода }

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

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

При вызове функции исполняются инструкции, расположенные в ее теле.

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

Все функции в 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() .

  • Вызов функции php имеет синтаксис:

имя_функции(аргумент 1, аргумент 2…аргумент n);

function MyFunc ($a,$b,$c=0){ $a=$b+$c; return $a; } echo MyFunc (0,1,2);

Функция вернет 3.

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

Анонимные функции в php

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

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


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

Рассмотрим на примерах:

$func1 = function(){ return 1; }; $x = $func1(); echo $x();

$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() . Она отправляет сообщение на указанный почтовый ящик. Ее синтаксис:

Описание принимаемых параметров:

  • to –адрес получателя письма. Должен соответствовать стандарту [email protected] ;
  • 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("[email protected]", "My Subject", $message);

А вот пример полностью рабочей формы для отправки сообщений:

Вот ее код php :

"; $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 = "[email protected]"; // тема письма $subject = "Письмо с обратной связи"; // заголовок письма $headers= "MIME-Version: 1.0rn"; $headers .= "Content-type: text/html; charset=utf-8rn"; // кодировка письма $headers .= "From: Тестовое письмо rn"; // от кого письмо // отправляем письмо mail($mail_to, $subject, $message, $headers); }

Код html :

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

" method="post" name="frm_feedback">
" />

" />


Несколько основных причин, почему письмо не отправляется:

  • Письмо не содержит дополнительного заголовка 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 [email protected].

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

  • Сбои в отправке писем могут возникнуть при размещении вызова 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);


Функции работы с массивами:

1. count() – возвращает количество элементов в массиве. Синтаксис: int count(mixed var)

$a=array("Volvo","Kia","Ford"); echo count($a);

2. reset() – устанавливает указатель массива на первый элемент, возвращает его значение.
Синтаксис: reset(array array)
Пример:

$b=array("1","2","3"); echo reset($b)."
";

3. sort() – сортирует массив по возрастанию. Функция воспринимает любой массив как список. Синтаксис: void sort(array array [, int sort_flags])

$fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); foreach ($fruits as $key => $val) { echo "fruits[" . $key . "] = " . $val . "n"; }

В языке PHP существует много функций для работы с датой и временем. Но функция date () в php является основной. Она возвращает строку, отформатированную согласно установленному шаблону format . Временная метка устанавливается аргументом timestamp . Ее синтаксис: string date (string $format [, int $timestamp = time() ])

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

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

Что такое функция?

Функция – это участок кода, который можно многократно выполнять в различных местах PHP скрипта (нашей страницы).

Синтаксис:

Function siteOn(){ // тело функции echo "Привет всем читателям блога Site on!"; }

Где siteOn – это произвольное имя функции, оно регистро-независимое. Функция в примере выше выводит заданный текст. Когда PHP интерпретатор обрабатывает код, он видит только объявление функции, без её тела, и естественно, не выполняет его. Тело функции храниться в памяти до завершения работы PHP скрипта, то есть до конца загрузки страницы.

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

"; } siteOn(); // вызов функции siteOn(); // вызов функции siteOn(); // вызов функции ?>

В примере выше мы вызвали функцию аж 3 раза, и вот результат:

Зачем нужны функции?

Казалось бы, ну функция и что? Мы могли бы эту строчку просто написать 3 раза и без функции. Могли, но если мы вдруг захотим что-то поменять в этом фрагменте, то менять нам придётся всего в одном месте, а не в трёх. Но это ещё не всё! Сейчас мы рассмотрели простой вариант, когда всё рядом и в одном файле. В жизни же в файле может быть тысячи строк, и раскиданы они могут быть хаотично по всему файлу.

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

То есть можете взять себе такое правило: если какой-то участок кода будет повторяться, то обязательно делаем из него функцию!

Проверка на существование

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

// любой код или без него } function siteOn(){ // любой код или без него } ?>

То получим следующую ошибку. Кстати, запоминайте все типичные ошибки:

Cannot redeclare siteOn() (previously declared in Z:\home\custom\www\index.php:3) in Z:\home\custom\www\index.php on line 9

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

Чтобы узнать, существует уже такая функция или нет, вы можете использовать встроенную функцию function_exists(). Пример:

// любой код или без него } if(function_exists("siteOn")){ echo "Такая функция уже есть!"; } ?>

Результат:

Лично я никогда не использую эту функцию, но знать вы о ней должны.

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

Аргумент функции ещё можно назвать её параметром. Выглядит это вот так:

В примере выше аргумент функции это переменная $author . Как его можно использовать? При вызове функций, мы можем передавать внутрь неё значение аргумента. Это придаёт нашим функциям небывалую гибкость и динамику:

"; } siteOn("Сергей"); // первый способ $name = "Андрей"; // второй способ siteOn($name); siteOn(); // ничего не передаём ?>

Результат:

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

Функция может иметь сколько угодно аргументов, например:

"; } siteOn("Сергей", "Site on!"); // первый способ $name = "Андрей"; // второй способ siteOn($name, "Сладкоешка"); siteOn("Фёдор Иванов"); // передали только 1 аргумент ?>

Результат:

Нестандартный вызов функций

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

"; } $text = "siteOn"; // заносим в переменную имя функции $text("Сергей", "Site on!"); // вызываем функцию через переменную ?>

Результат будет каким и обычно:

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

Помните таблицу умножения из предыдущей ? Там у нас есть 2 параметра: количество строк и количество столбцов , которые мы задаём в переменных. Самое время сделать из того кода целую функцию, которая будет принимать два вышеперечисленный значения!

Весь код из предыдущего урока я оставлю неизменным, разве что теперь нам больше не придётся задавать в нём количество строк и столбцов, мы это будем делать при вызове функции:

// закомментировали эти 2 строки, так как количество теперь передаётся при вызове функции // $rows = 20; // количество строк, tr // $cols = 20; // количество столбцов, td $table = "

"; for ($tr=1; $tr<=$rows; $tr++){ $table .= ""; for ($td=1; $td<=$cols; $td++){ if ($tr===1 or $td===1){ $table .= ""; }else{ $table .= ""; } } $table .= ""; } $table .= "
". $tr*$td ."". $tr*$td ."
"; echo $table; } getTable(3,3); // выводим таблицу умножения 3 на 3 getTable(5,5); // выводим таблицу умножения 5 на 5 getTable(10,10); // выводим таблицу умножения 10 на 10 ?>

Результат:

Аргументы по умолчанию

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

"; } siteOn("Сергей"); ?>

В этом примере мы аргументу $blog присвоили значение по умолчанию Site on! После чего вызвали функцию всего с одним аргументом, а второй использовал своё значение по умолчанию.

Результат:

аргументы по умолчанию обязательно записываются последними.

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

Поделиться