ci代码中这样写是什么意思
本帖最后由 雨随风飘 于 2017-3-25 15:24 编辑DB_query_builder.php中1240行,
public function limit($value, $offset = 0)
{
is_null($value) OR $this->qb_limit = (int) $value;
empty($offset) OR $this->qb_offset = (int) $offset;
return $this;
}
没看懂中间的函数,布尔运算后转换成int类型? 88646958@qq.com 发表于 2017-3-25 10:26
这就是CI的代码的优雅和巧妙, 说不出用什么词来形容。这个地方看不懂应该是OR吧。
这里 如果OR前面为真 则 ...
谢谢你的回答,我懂了,讲的非常明白和透彻,第一次看到这种用法。
不过我调试了一下,应该是or前面是假,执行后面的。
<?php
$value="1";
$value1=444;
$value2=555;
$value3=666;
var_dump(empty($value));
empty($value) OR $value1 = (int) $value2;
var_dump($value);
var_dump($value1);
var_dump($value2);
?> 你是指的 OR 么? 本帖最后由 88646958@qq.com 于 2017-3-25 10:41 编辑
这就是CI的代码的优雅和巧妙, 说不出用什么词来形容。这个地方看不懂应该是OR吧。
这里 如果OR前面为真 则执行OR后面的。这比if是不是要省去了很多代码数。所以 is_null 和empty 这两行就这么理解。
$this代表当前类整个对象。面向对象的多对多,一对多,多对一这种多级关联时,return $this就有意义
这就是为什么我们在数据库操作类可以实现那么多的联级式查询。 Hex 发表于 2017-3-25 09:18
你是指的 OR 么?
是的,刚开始没理解or的用法,以为是布尔运算呢,看到88646958@qq.com的我搞懂了 如果你接触点js代码,就会觉得这是多么常见的一种写法:
let a = b || { }; 雨随风飘 发表于 2017-3-25 12:54
谢谢你的回答,我懂了,讲的非常明白和透彻,第一次看到这种用法。
不过我调试了一下,应该是or前面是假 ...
是的,说反了。 为假就执行!
页:
[1]