Одним из важнейших вопросов для расширений языка является приём и обработка данных, переданных через аргументы. Большинство расширений сконструированы для работы со специфическими данными ввода (или требуют параметров для выполнения своих специфичных акций), и аргументы функций это единственный реальный способ обмена данными между уровнем PHP и уровнем C. Разумеется, имеется также возможность обмена данными с использованием предопределённых глобальных значений (также обсуждаются позднее), но это по всем показаниям должно быть исключено как совершенно недопустимая практика. Детали см. в Главе 1, "Концепции разработки".
PHP не использует формальное определение функции, поскольку синтаксис вызова всегда динамический и никогда не проверяется на наличие ошибок. Проверку корректности синтаксиса выполняет пользовательский код. Например, можно вызвать функцию с использованием только одного аргумента в первый раз и 4 аргументов - в следующий раз, оба вызова синтаксически являются абсолютно корректными.
Поскольку в PHP отсутствует формальное определение функции с поддержкой
проверки синтаксиса вызова и поскольку возможно переменное количество
аргументов, иногда необходимо определять, с каким количеством аргументов функция была вызвана.
Следующий код проверяет корректность количества аргументов: