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