Как заголовок спрашивает: нормально ли вызывать функцию, передаваемую по ссылке, еще не определенную?PHP: Действителен для вызова функции, передающей по ссылке переменную, еще не определенную?
Предположим, что переменная будет установлена внутри Функция в любом случае.
я выкладываю пример кода, чтобы дать контекст вопроса:
function doStuff(&$error)
{
$error = false;
// Start doing stuff...
// ...
if(/* SOMETHING WRONG */)
{
$error = "Something went wrong";
}
}
doStuff($err); // $err is not defined!
if($err !== false)
{
// Handle the error, ex.
echo $err;
exit;
}
Я попробовал на кли с error_reporting (E_ALL);
и никаких ошибок не было.
Еще я прошу подтверждение, если это безопасно, не имеют недостатков, не плохой шаблон кодирования ...
Передача аргументов по ссылке ** есть ** плохой шаблона кодирования/привычка. Для человека, который читает строку 'doStuff ($ err)', не будет намека на то, что функция изменит переменную, переданную как аргумент. Кроме того, нет никакого намека на то, что функция не принимает литерал или константу в качестве аргумента. – axiac
@axiac Если вы вызываете случайные функции, не читая их документацию, вам ничего не может помочь. Реферируемые параметры являются абсолютно правильной техникой для определенных ситуаций. – deceze
Это очень полезно, когда вы хотите вернуть логическое значение и обновить некоторые данные массива. Однако это также можно выполнить с помощью объекта (oop), который хранит любые ошибки, и вы можете добавлять методы для дополнительной функциональности. Например. $ errorObj = new ErrorMessage(); DoStuff ($ errorObj); – Nitin