У меня есть функция, которая выглядит примерно так:
function name( param1 = default, param2 = default, param3 = default) {...}
Я вызываю функцию, передавая элементы массива как параметры:
name( $param['foo'], $param['bar'], $param['hello'] );
Мой вопрос — если один (или более) из элементов, переданных в вызове функции, не определен, как он обрабатывается внутри самой функции? Я спрашиваю, потому что я пытаюсь вызвать функцию, но у меня нет никакого способа узнать, определен ли какой-либо из элементов.
Внутри функции я попытался отладить параметр, переданный через isset()
, is_null()
, а также empty()
и я получил ложь, правда и правда соответственно. Это приводит меня к мысли, что, поскольку что-то действительно передается, значение по умолчанию не установлено. Если бы кто-нибудь мог объяснить, как с этим справляются, я был бы признателен.
Функция, как правило, не имеет ни малейшего представления, и, как правило, не имеет значения, откуда берется аргумент. например
$x = 2;
foo($x);
foo(2);
Так далеко как foo()
обеспокоен, он просто увидит 2
входите, и ничто не скажет это «это 2 было жестко закодировано» или «это 2 было передано через переменную».
Если вы передадите неопределенную переменную, то сама функция увидит null
значение приходит, и PHP выдаст предупреждение об использовании неопределенной переменной, ДО того, как у кода функции появится шанс начать выполнение.
Краткий ответ: это значение NULL, которое является постоянным значением, обозначающим нулевое или неинициализированное значение.
Вызов неопределенного индекса в массиве приводит к предупреждению.
Два правила для вас:
Пример:
$params = ['foo' => 1, 'bar' => null, 'nextKey' => null];
Обычный подход — передать массив (sub):
myMethod($params);
Ваш метод принимает необходимые элементы.