Про аргументи функцій
У кожної функції може бути, як ми вже говорили, список аргументів.
За допомогою цих аргументів у функцію передається різна інформація (наприклад, значення числа, факторіал якого треба підрахувати).
Кожен аргумент є змінною або константу.
За допомогою аргументів дані в функцію можна передавати трьома різними способами.
Це передача аргументів за значенням (використовується за умовчанням), по посиланню і завдання значення аргументів за замовчуванням. Розглянемо ці способи докладніше.
Коли аргумент передається в функцію за значенням, зміна значення аргументу всередині функції не впливає на його значення поза функцією. Щоб дозволити функції змінювати її аргументи, їх потрібно передавати по посиланню.
Для цього у визначенні функції перед ім'ям аргументу слід написати знак амперсанд «».
Приклад 1. Передача аргументів за посиланням (html, txt)
У функції можна визначати значення аргументів, використовувані за замовчуванням.
Саме значення за замовчуванням має бути константним виразом, а не змінною і не представником класу або викликом іншої функції.
У нас є функція, що створює інформаційне повідомлення, підпис до якого змінюється в залежності від значення переданого їй параметра. Якщо значення параметра не задано, то використовується підпис "Оргкомітет".
Приклад 2. Значення аргументів за замовчуванням (html, txt)
Результатом роботи цього скрипта буде:
Якщо у функції кілька параметрів, то ті аргументи, для яких задаються значення за замовчуванням, повинні бути записані після всіх інших аргументів у визначенні функції. В іншому випадку з'явиться помилка, якщо ці аргументи будуть опущені при виклику функції.
В результаті роботи скрипта одержимо наступне
Якщо ж ми напишемо ось так:
То в результаті отримаємо:
Списки аргументів змінної довжини
В PHP4 можна створювати функції зі змінним числом аргументів.
Тобто ми створюємо функцію, не знаючи заздалегідь, зі скількома аргументами її викличуть.
Для написання такої функції ніякого спеціального синтаксису не потрібно.
Все робиться за допомогою вбудованих функцій func_num_args (), func_get_arg (), func_get_args ().
Функція func_num_args () повертає число аргументів, переданих в поточну функцію. Ця функція може використовуватися тільки усередині визначення користувальницької функції.
Якщо вона з'явиться поза функцією, то інтерпретатор видасть попередження.
Приклад 1. Використання функції func_num_args () (html, txt)
Функція func_get_arg (ціле номер_аргументу) повертає аргумент зі списку переданих у функцію аргументів, порядковий номер якого заданий параметром номер_аргументу. Аргументи функції вважаються починаючи з нуля.
Як і func_num_args (), ця функція може використовуватися тільки усередині визначення будь-якої функції.
Номер_аргументу не може перевищувати число аргументів, переданих у функцію. Інакше буде згенеровано попередження, і функція func_get_arg () поверне False.
Створимо функцію для перевірки типу даних її аргументів. Вважаємо, що перевірка пройшла успішно, якщо перший аргумент функції - ціле число, другий - рядок.
Приклад 2. Функція для перевірки типу даних, її аргументів (html, txt)
Результатом роботи буде наступне.
Функція func_get_args () повертає масив, що складається зі списку аргументів, переданих функції.
Кожен елемент масиву відповідає аргументу, переданому функції.
Якщо функція використовується поза визначення користувальницької функції, то генерується попередження.
Перепишемо попередній приклад, використовуючи цю функцію. Будемо перевіряти, чи є цілим числом кожен парний аргумент, який передається функції:
Як бачимо, комбінації функцій func_num_args (), func_get_arg () і func_get_args () використовується для того, щоб функції могли мати змінний список аргументів.
Ці функції були додані тільки в PHP 4. У PHP3 для того, щоб домогтися подібного ефекту, можна використовувати як аргумент функції масив.
Наприклад, ось так можна написати скрипт, який перевіряє, чи є кожен непарний параметр функції цілим числом: