用不同类型的变量简化empty() + echo


Simplify empty() + echo with different kind of variables

我试图得到我的代码错误和通知自由。因此我应该检查每一个我想要回显的变量。我感兴趣的具体情况是,一个"新"页面也可以作为"编辑"。如果选择了某些内容,它将显示编辑页面,其中的字段将填充要编辑的内容。如果没有选择,它是相同的页面,但有空字段。这可以让你明白我的意思:

  <li class="bordertop">
    <label>Recommended knowledge</label>
    <input class="first_input" name="recommended[]" value="<?php if (count ($Subject->retrieveLink('recommended')) > 0) echo current($Subject->retrieveLink('recommended')); ?>" placeholder="Title"/>
    <input class="second_input" name="recommended_url[]" value="<?php if (key ($Subject->retrieveLink('recommended')) != null) echo key($Subject->retrieveLink('recommended')); ?>" placeholder="http://www.example.com"/>
  </li>

我真的不喜欢我的页面有那么多代码。我正在尝试尽可能多地将逻辑与表示分离,并保持面向对象的方法。我正在考虑做类似的事情:

// Check + echo
function checko($arg = null)
  {
  if (!is_array($arg))
    if (!empty($arg))
      echo $arg;
  }

但这似乎也在为将来的麻烦打电话(从内部回显不让我进一步修改字符串,它感觉不像一个"适当"的解决方案)。有很多变量,我想检查和回显,有时会填充,有时是空的。最好的方法是什么?我知道我可以通过执行if (empty($variable)) echo $variable在任何地方重复我的代码,但是:

  1. 这不能从对象返回值(在PHP 5.4中,我相信它会在5.5中工作)。这是我最关心的,因为我经常使用它。

  2. 我有太多重复的代码。没有

我正试图得到我的代码错误和通知自由。因此,我应该检查我想要回显的每个变量。

不,你不应该。
听着,这些通知不只是为了让你忙着跟他们抗争。它们是为了帮助,而不是让你的代码变得复杂。
你只需要确定你操作的是什么变量。添加大量的if(empty())不会有任何好处。

我真的不喜欢我的页面里有那么多代码。

对于模板来说确实有太多代码了。其中一些应该移动到controller
中在调用模板之前准备好数据,然后将其简化为

<input class="first_input" name="recommended[]" value="<?=$recommended?>" placeholder="Title"/>
<input class="second_input" name="recommended_url[]" value="<?=$recommended_url?>" placeholder="http://www.example.com"/>

不要在函数内部回显,只返回值

// Check + echo
function checko($arg = null) {
  if (!is_array($arg))
    if (!empty($arg))
      return $arg;
}

同样,如果你想缩短代码,你可以使用三元操作符:http://phpmaster.com/using-the-ternary-operator/