4

我发现自己经常写 if 语句,如下所示:

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

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

我也不是在寻找三元解决方案。与 jquery 使用this. (据我所知)php 不允许匿名函数,或者这不是常见的做法,我也不是说我想要在我的类中使用一堆匿名函数。

更新 在 php 7 中添加 双问号 (??) 运算符在 PHP 中是什么意思

4

5 回答 5

2

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

在这种情况下,我可以建议的是我个人所做的,无需触摸鼠标移动光标和附近的箭头,$this然后按住CTRL+SHIFT和向右箭头,您将一次选择更多内容。(然后只需使用 ctrl+c 和 ctrl+v 复制粘贴)

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

于 2012-12-17T10:42:25.333 回答
0
var $a = "" ; 
 function __construct(){ 
   if(isset($this->request->data['Parent']['child'])){
         $this->a = "1";
    }
   }

现在使用

if(!empty($this->a)){
// ur code
}
于 2012-12-17T10:44:17.693 回答
0

您可以在同一条件块中创建一个变量,并在后面使用它

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

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

于 2012-12-17T11:13:48.737 回答
0

尽管有几种方法可以缩短代码,但我建议不要使用这种技术。原因是这些技术中的大多数使代码变得不太清楚,下一个人也无法理解。

我建议使用具有代码完成功能的良好 IDE,这将有助于键入长名称,同时保持代码清晰,以便下一个人查看。

于 2012-12-17T12:06:25.993 回答
0

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

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

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

于 2012-12-17T12:07:20.207 回答