[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Создание переменной заранее
Страницы: 1, 2
stump
Цитата (twin @ 22.08.2015 - 06:53)
Цитата (stump @ 21.08.2015 - 18:31)
Который при $pupilIds = NULL вернет fatal error.

Неверный вывод.

Отсутствие переменной (неинициализированная переменная) совсем не одно и то же, что $pupilIds = NULL. В последнем случае она как раз есть, под неё выделена память, она обозначена названием (адрес ячейки). И код в таком случае сработает корректно, если нет строгой типизации, что в PHP применяется крайне редко. Кстати говоря, из-за этого.

Так что инициализацию в аргументе функции лучше делать так, тогда не будет никакого фатала, а будет обычный нотис на неинициализированную переменную:

function foo($var = array()){var_dump($var);}

$pupils = [];
// Это и есть инициализация.
// Если закомментить эту строчку, будет нотис, не более того.

$pupilIds = null;

foreach ($pupils as $pId => $pArr) {
$pupilIds[] = $pupils[$pId]['ID'];
}

foo($pupilIds);

Инициализация переменных, это действительно хороший тон, помогает избежать нотисов и неоднозначностей. Но не так уж все страшно, как расписал stump.
Цитата
Странно что никто про это не написал раньше.

Потому никто раньше и не писал этого.

а если будет так:

function foo($var = array()){fareach($var as $v)var_dump($v);}

то ваша не инициализированная переменная снова выбросит fatal error.

например эти вызовы в разных классах и порефакторили только один.

Нужна предсказуемость работы кода.


_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.