我发现自己经常写下如下语句:
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不允许使用匿名函数,或者它不常见,我不是说我想在我的课程中使用一堆匿名函数。
答案 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
仅在密钥不存在时被调用。