У меня есть функция, где аргумент передается со ссылкой (&). Однако, если я установлю этот аргумент в NULL, я получу ошибку:
«Невозможно передать параметр 1 по ссылке в …»
Это скрипт:
<?php
function doSomething(&$reference,$arg1,$arg2){
if($reference !== NULL){
//Do something with reference
}else{
//Do something else
}
}
//Call with reference
doSomething($a,$b,$c);
//Call without reference
//doSomething(NULL,$b,$c);
?>
Я думаю, это связано с тем, что NULL не объявлен как переменная, а сразу объявлен в самой функции. Это работает, когда я делаю это:
$nullVar = NULL;
doSomething($nullVar,$b,$c);
Как мне отредактировать мою функцию, чтобы она не отображала ошибку ссылки, когда я просто поместил в функцию значение NULL, и сохранил ссылку только тогда, когда это возможно (поскольку я не использую ссылку, когда она установлена в NULL)
Вы все еще можете создать необязательную ссылку, если поменяете местами аргументы:
function doSomething($arg1,$arg2, &$reference = null){
if($reference !== NULL){
//Do something with reference
}else{
//Do something else
}
}
$a = 'a';
$b = 'b';
doSomething($a, $b);
Но мимоходом null
этот третий аргумент все равно вызовет ошибку.
doSomething($a, $b, null); // error
Также ссылки могут быть удовлетворены вновь созданными переменными. Поскольку переменные без присвоенных значений по умолчанию null
Вы можете предоставить переменную без намерения использовать ее впоследствии.
doSomething($a, $b, $unused_var);
Вы не можете ссылаться на NULL, он не существует. Честно говоря, проверьте на нулевое значение перед вызовом функции и запустите блок if ($ reference! == NULL). или вы можете разделить функцию на две отдельные функции, одну, если $ reference равна нулю, а другую для $ reference, указывающую на что-то.