Функції в PHP

 

Для чого потрібні функції? Щоб відповісти на це питання, потрібно зрозуміти, що взагалі являють собою функції. У програмуванні, як і в математиці, функція є відображення безлічі її аргументів на безліч її значень. Тобто функція для кожного набору значень аргументу повертає якісь значення, що є результатом її роботи. Навіщо потрібні функції, спробуємо пояснити на прикладі. Класичний приклад функції у програмуванні - це функція, що обчислює значення факторіала числа. Тобто ми задаємо їй число, а вона повертає нам його факторіал. При цьому не потрібно для кожного числа, факторіал якого ми хочемо отримати, повторювати один і той самий код - досить просто викликати функцію з аргументом, рівним цьому числу.

Функція обчислення факторіала натурального числа

<? Php 
function fact ($n) { 
if ($n == 0) return 1; 
else return $fact = $ n * fact ($ n-1); 

echo fact (3); 
// Можна було б написати echo (3 * 2); 
// Але якщо число велике, 
echo fact (50); 
// То зручніше користуватися функцією, 
// Ніж писати echo (50 * 49 * 48 *...* 3 * 2); 
?>

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

Подивимося, як у загальному вигляді виглядає оголошення функції. Функція може бути визначена за допомогою наступного синтаксису:

function Імя_функціі (параметр1, параметр2, ... параметрN) { 
Блок_дій 
return "значення повертається функцією"; 
}

Якщо прямо так написати в php-програмі, то працювати нічого не буде. По-перше, Імя_функції і імена параметрів функції (параметр1, параметр2 і т.д.) повинні відповідати правилам найменування в PHP (і українських символів в них краще не використовувати). Імена функцій нечутливі до регістру. По-друге, параметри функції - це змінні мови, тому перед назвою кожної з них повинен стояти знак $. Ніяких крапок ставити в списку параметрів не можна. По-третє, замість слів блок_дій в тілі функції повинен знаходитися будь-який правильний PHP-код (не обов'язково залежати від параметрів). І нарешті, після ключового слова return має йти коректний php-вираз (що-небудь, що має значення). Крім того, у функції може і не бути параметрів, як і значення, що повертається. Приклад правильного оголошення функції - функція обчислення факторіала, наведена вище.

Як відбувається виклик функції? Вказується ім'я функції і в круглих дужках список значень її параметрів, якщо такі є:

<? Php 
Імя_функції ("значення_для_параметра1", 
"Значення_для_параметра2 ",...); 
// Приклад виклику функції - виклик функції 
// Обчислення факторіала наведено вище, 
// Там для обчислення факторіала числа 3 
// Ми писали: fact (3); 
// Де fact - ім'я викликається функції, 
// А 3 - значення її параметра з ім'ям $ n 
?>

Коли можна викликати функцію? Функцію можна викликати після її визначення, тобто в будь-якому рядку програми нижче блоку function f_name (){...}. У PHP3 це було дійсно так. Але вже в PHP4 такої вимоги немає. Вся справа в тому, як інтерпретатор обробляє одержуваний код. Єдиний виняток становлять функції, які визначаються умовно (всередині умовних операторів або інших функцій). Коли функція визначається таким чином, її визначення повинно передувати її виклику.

Приклад. Визначення функції всередині умовного оператора

<? Php 
$Make = true; 
/* Тут не можна викликати Make_event (); 
тому що вона ще не існує, але можна 
викликати Save_info () * / 

Save_info ("Вася", "Іванов", 
"Я вибрав курс по PHP"); 

if ($Make) { 
// Визначення функції Make_event () 
function Make_event () { 
echo "<p> Хочу вивчати Python <br>"; 


// Тепер можна викликати Make_event () 
Make_event (); 
// Визначення функції Save_info 
function Save_info ($first, $last, $message) { 
echo "<br> $ message <br>"; 
echo "Ім'я:". $first. "". $last. "<br>"; 

Save_info ("Федя", "Федоров", 
"А я вибрав Lisp"); 
// Save_info можна викликати і тут 
?> 

Якщо функція одного разу визначена в програмі, то перевизначити або видалити її пізніше не можна. Незважаючи на те, що імена функцій нечутливі до регістру, краще викликати функцію з того ж імені, яким вона була задана у визначенні.

Приклад. Визначення функції усередині функції

<? Php 
/* Не можна зберегти дані, тобто викликати 
функцію DataSave () до того, як виконана 
перевірка їх правильності, тобто викликана 
функція DataCheck () */ 

DataCheck (); 
DataSave (); 

function DataCheck () { 
// Перевірка правильності даних 
function DataSave () { 
// Зберігаємо дані 


?>

Розглянемо докладніше аргументи функцій, їх призначення та використання.