2013-05-07 2 views
2

Из документации PHP я наткнулся на следующую функцию:Ограничить количество параметров для дополнительных параметров в PHP

string number_format (float $number , int $decimals = 0 , 
         string $dec_point = '.' , string $thousands_sep = ',') 

Эта функция принимает один, два или четыре параметра (не три). При передаче трех аргументов функция генерирует предупреждение Warning: Wrong parameter count for number_format() в строке вызова функции.

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

Мои вопросы:

  1. Можно ли каким-то образом ограничить количество аргументов, как указано выше, в самом объявлении функции (не в коде функции)

  2. Если нет, и что выше функция использует trigger_error() для генерации предупреждения, как генерируемое предупреждение ссылается на файл и строку, из которой вызывается эта функция. trigger_error() Функция, похоже, генерирует предупреждение/ошибку на вызываемой линии.

+0

http://php.net/manual/en/function.trigger-error.php? –

ответ

0

Функция просто добавляет дополнительную проверку, есть ли у вас 3 параметра или нет.

Если отправлено 3 параметра, оно выдает предупреждение.

Аналогично:

if(func_num_args() == 3) { 
    trigger_error('Wrong parameter count for number_format()', E_USER_WARNING); 
} 

Артикул: func_num_args(), trigger_error()

+0

Но не генерирует ли это предупреждение на строке в библиотеке, где определена эта функция. В этом случае предупреждение отображается в строке, где вызывается функция. – adwiv

+0

Подобная логика определена в парсере PHP. поэтому анализатор PHP будет поднимать предупреждение на уровне определения функции. – Raptor

+0

Я обновил вопрос. Я хочу понять эту логику и можно ли ее реализовать в некоторых наших собственных функциях. Trigger_error вызывает предупреждение в файле/строке, которую он использует. – adwiv

Смежные вопросы