разрешить пользовательским функциям принимать списки аргументов переменной длины.
==================================================================================

ько что узнал, что есть функция под названием`func_get_arg` в PHP, который позволяет разработчику использовать вариант стиля получения аргументов. Это кажется очень полезным, потому что количество аргументов теперь может быть произвольным, но я не могу придумать ни одного хорошего примера его использования.

Каковы некоторые примеры использования этой функции, чтобы полностью использовать ее полиморфную характеристику?

`func_get_args()` который проще использовать, если требуется несколько аргументов.

Например, чтобы воссоздать PHP`max()`.

[CodePad](http://codepad.org/mRdBN5MK).

Теперь вы можете сделать`echo max(1,5,7,3)` и получить`7`.



`func_get_args()`:  
Получает массив списка аргументов функции.

Эта функция может использоваться вместе с`func_get_arg()` а также`func_num_args()` разрешить пользовательским функциям принимать списки аргументов переменной длины.



 вы используете термин «полиморфизм» совершенно неправильно. Полиморфизм - это концепция объектно-ориентированного программирования, и он не имеет ничего общего с переменным числом аргументов в функциях.

По моему опыту, все`func_get_args` позволяет сделать это добавить немного синтаксического сахара.

Подумайте о функции, которая может принимать любое количество целых чисел и возвращать их сумму. (Я обманываю, так как это уже существует в`array_sum`, Но измена хороша, если пример прост. Вы можете сделать это следующим образом:

Теперь вы бы назвали это так:

Это не очень красиво. Но мы можем сделать лучше:

Теперь вы можете назвать это так:



Начиная с php5.6, нет ни одного случая использования`func_get_arg` больше; что не означает, что его функциональность больше не нужна, но заменяется[переменная функция](https://php.net/manual/en/functions.arguments.php#functions.variable-arg-list) с помощью`...` синтаксис:

Это особенно полезно, если есть методы, которые перегружены в конце; нужно отфильтровать первые аргументы больше, как показано[пример](http://andreas.heigl.org/2014/04/26/new-and-cool-features-in-php5-6/):

Старый стиль с использованием`func_get_arg`:

Более новый вариадический стиль;

Оба foo выдают один и тот же результат, один гораздо проще написать.



 что есть хороший вариант использования этого внутри нормальной функции. Как любитель контроля, мне нравится точно знать, что передаётся моим функциям, и мне нравится точно знать, что я передаю.

Однако его можно использовать полностью для таких вещей, как динамическая / статическая маршрутизация URL. Когда вы переписываете (через mod\_rewrite) URL-адрес аргументов для одной начальной загрузки.

В этом смысле вы можете иметь аргументы, которые не обязательно должны существовать при каждом запросе страницы.



Я почти никогда не использую`func_get_arg()`но я использую свою кузину`func_get_args()` немного. Вот один пример, функция в соответствии с`echo` Утверждение, что сущность кодирует все свои аргументы:

Я использую эту функцию совсем немного.

Вот еще один полезный пример, функция, которая выполняет ту же работу, что и SQL`COALESCE()` функция.

Возвращает первый ненулевой аргумент, переданный в, или`null` если нет такого аргумента.



 у нас есть несколько массивов, содержащих данные, в которых нам нужно искать по ключам их значения без объединения этих массивов.

Массивы похожи на:

В этом случае, скажем, нам нужно получить все значения ключа`a` из всех массивов. Мы можем написать функцию, которая принимает произвольное количество массивов для поиска.

Так что, если мы используем функцию:

`$x` будет содержать`array(5, 2, 7)`.