有没有一种技术可以避免在if语句中重写长操作数?

时间:2012-12-17 10:39:12

标签: php

我发现自己经常写下如下语句:

if(isset($this->request->data['Parent']['child'])){
     $new_var['child'] = $this->request->data['Parent']['child'];
}

我的问题是,如果没有在if语句之前创建一个新的较短的变量,是否有一个神奇的php进程有助于避免在if语句的主体中重写$this->request->data['Parent']['child']?我还希望为任何后继开发人员保持代码清洁。

我也不是在寻找三元解决方案。 jquery使用this时更多的东西。 (我知道)php不允许使用匿名函数,或者它不常见,我不是说我想在我的课程中使用一堆匿名函数。

5 个答案:

答案 0 :(得分:2)

这将非常酷,但不幸的是没有什么可以做到的 也许某些IDE的插件可以帮助你做这样的事情。

我在这个案例上的建议是我亲自做的事情,没有用$this附近的箭头触摸鼠标移动光标然后按住 CTRL + SHIFT 和右箭头,您将一次选择更多的东西。 (然后只需使用ctrl + c和ctrl + v复制粘贴)

当然这适用于所有语言,而不仅仅是PHP

答案 1 :(得分:0)

var $a = "" ; 
 function __construct(){ 
   if(isset($this->request->data['Parent']['child'])){
         $this->a = "1";
    }
   }

现在使用

if(!empty($this->a)){
// ur code
}

答案 2 :(得分:0)

您可以在相同的条件块中创建变量,并在之后使用它

if($child = $this->request->data['Parent']['child']){
     $new_var['child'] = $child;
}

这里唯一的区别是,如果设置$this->request->data['Parent']['child']但是有一个FALSE值(或一个空字符串,NULL或0),测试将不会通过

答案 3 :(得分:0)

虽然有几种方法可以缩短您的代码,但我会反对这些技巧。原因是大多数这些技术使代码不太清楚,以供下一个人理解。

我建议使用一个代码完成的好IDE,这有助于输入长名称,同时保持代码清晰,供下一个人查看。

答案 4 :(得分:0)

我不完全确定您真正寻找什么,但您可以使用自定义对象存储数据,当您尝试访问不存在的密钥时,不会生成通知。< / p>

class Data {
  function __get($key) {
    return null;
  }
}

这是有效的,因为__get仅在密钥不存在时被调用。