我有一点问题:
<?=$this->bs_forms->text_input('last_name','Name', $user->last_name);?>
如果最后一个变量$ user,不存在我当前得到一些PHP错误。我的解决方案是:
<?=$this->bs_forms->text_input('last_name','Last Name', (isset($user))? $user->last_name : NULL);?>
但这看起来有点黑客。有更好的方法吗?
答案 0 :(得分:1)
//Ultimate
(isset($user))? $user->last_name : NULL)
//Best
答案 1 :(得分:0)
您可以使用PHP的错误抑制修饰符:
<?=$this->bs_forms->text_input('last_name','Name', @$user->last_name);?>
答案 2 :(得分:0)
还有其他方法,但它们并不比其他任何方式“更好”。 PHP给你一个错误信息,你提出的解决方案实际上并没有解决问题,它只是添加了一些代码来避免触发它。
PHP试图告诉你的实际错误是你已经陷入了这样一种情况:你试图执行一行代码而不知道你传递给它的那些东西的状态。简而言之:PHP抱怨$user
未定义,因为您实际上没有为$user
定义任何值。
这里有几种解决方案,具有相同的有效性(并且所有基本上都是做同样基本事情的不同方式):
$user
,否则请确保不会调用此位代码。我希望你实际上有几条相似的行,所以你可能希望将所有这些划分为两个更大的“if $user
已定义”和“if $user
未定义”部分。$user
,否则不要覆盖这些默认值$user
,但如果真实$user
不存在,请使用默认值加载。{/ li>
答案 3 :(得分:0)
(isset($用户))? $ user-&gt; last_name:NULL)
这里可能出现错误 - “试图获取非对象的属性”
最佳方式:
(isset($user->last_name))? $user->last_name : NULL)
PS。使用@ - 不良做法