Вы здесь: Главная > Основы разработки сайта > Основы PHP > 23 урок - Основы про функции

Основы PHP

23 урок - Основы про функции

Функция – программный блок, который может многократно выполняться в любом месте сценария. Название функции регистронезависимое. 

 Синтаксис:

<?php
function ИмяФункции (аргумент1[=значение1], …, аргументN[=значениеN]) {
     команды;  
(Или вложенная функция);
}
?>

Синтаксис вызова функции:

<?php
ИмяФункции (аргумент1[=значение1], …, аргументN[=значениеN]);
?>

Функцию можно вызывать бесконечное количество раз!

Простой пример:

<?php
// Описание функции 
function sayHello(){ 
     echo "Hello, world!";
}
 
// Вызов функции
sayHello();  // Hello, world!
sayHello();  // 2 раз
?>

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

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

Пример:

<?php
// Описание функции 
function sayHello($name){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
sayHello('Вова');
?>

В данном примере мы передали функции что переменная $name равна “Вова”.

Можно в вызове функции использовать переменные, а не сразу значение переменной. Точнее нужно :-) 

Пример:

<?php
// Описание функции 
function sayHello($name){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
 
$my_name = 'Дима';
sayHello($my_name);
 
?>

Есть и третий вариант. Он редко используется, но знать о нем надо.

<?php
// Описание функции 
function sayHello($name){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
 
$my_name = 'Дима';
$str = 'sayHello';
$str($my_name);
?>

В данном примере имя функции засунуто в переменную. И уже эта переменная ведет себя как функция! Почему так получается? Когда php доходит до символов $str( Он понимает что от него требуется вызвать функцию, Следовательно он идет к этой переменной и смотрит что там. А там название функции. Он ищет в коде функцию с этим названием и вызывает ее.  Это очень важный момент его надо просто понять. 

Еще один важный момент. Количество параметр передаваемых может быть неограниченное число. А разделаются они запятыми. Пример:

<?php
// Описание функции 
function sayHello($hello,$name){ 
     echo $hello.' - '.$name;
}
 
// Вызов функции
 
$my_name = 'Дима';
$my_hello = 'Привет';
sayHello($my_hello,$my_name);
?>

В данном примере передается два параметра. А что будет? Если я в выводе вместо :

<php
sayHello($my_hello,$my_name);
// Привет - Дима
?>

Напишу :

<php
sayHello($my_name, $my_hello);
?>

А будет  “Дима – Привет”. Почему так происходит? А потому что передача в функцию осуществляется по порядку!!! 

Еще один важный момент!!! Что будет, если мы вдруг не передадим параметр функции? Пример такого кода:

<?php
// Описание функции 
function sayHello($name){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
sayHello();
?>

А получу я ошибку:

 
Warning: Missing argument 1 for sayHello()
 

Нам php говорит, мол нет аргумента. Как быть? Живой пример. У нас например, система приветствия на сайте. И нам должно по логике вещей, если эта не зарегистрированный пользователь показать надпись “Привет Гость”. Для этих целей есть такая штука как параметр по умолчанию. Задается он в круглых скобках самой функции. Пример правильной записи:

<?php
// Описание функции 
function sayHello($name='Гость'){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
sayHello();  // Привет - Гость
?>

В данном пример мы не передали аргумент , но выставили аргумент по умолчанию:

Давайте теперь передадим:

<?php
// Описание функции 
function sayHello($name='Гость'){ 
     echo 'Привет - '.$name;
}
 
// Вызов функции
$user = 'Вова';
sayHello($user);
?>

Это основы про функции. Уроков на эту тему еще будет много.