Сбой проверки необязательного параметра - PullRequest
0 голосов
/ 06 ноября 2011

Я реализовал функцию в одноэлементном классе с необязательным параметром.

private function MyFunction($Name = "")
{

$localCopy = $Name;

//this check fails, EMPTY is printed!
if (empty($Name))
  echo "EMPTY";
else
  echo "NOT EMPTY";

//this is working, NOT EMPTY is printed
if (empty($localCopy))
  echo "EMPTY";
else
  echo "NOT EMPTY";

}

Эта функция вызывается другой функцией из того же класса.

public function OtherFunction($Name = '')
{
   self::MyFunction($Name);
}

OtherFunction вызывается извне

OtherFunction("Hello");

Почему пустой чек корректно работает только с локальной копией? Может кто-нибудь объяснить мне это ??

Ответы [ 2 ]

0 голосов
/ 06 ноября 2011

Я решил проблему.Черт!

Я использовал комбинацию $ Name и $ name в своем коде.Две разные переменные !!!Использовалась неназначенная переменная ....

Какая уродливая вещь для людей, пришедших из C / C ++ / C # :( Теперь предупреждение, без ошибок ....:)

0 голосов
/ 06 ноября 2011

Нет.Обе переменные

$Name

и

$localCopy

не должны различаться.Оба указывают на одну и ту же «вещь».

Более того, $localCopy часто не является копией , просто вторым именем для обозначения $name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...