用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5578|回复: 6
收起左侧

[已解决] ci代码中这样写是什么意思

[复制链接]
发表于 2017-3-25 01:19:14 | 显示全部楼层 |阅读模式
本帖最后由 雨随风飘 于 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类型?
 楼主| 发表于 2017-3-25 12:54:13 | 显示全部楼层
88646958@qq.com 发表于 2017-3-25 10:26
这就是CI的代码的优雅和巧妙, 说不出用什么词来形容。这个地方看不懂应该是OR吧。
这里 如果OR前面为真 则 ...

谢谢你的回答,我懂了,讲的非常明白和透彻,第一次看到这种用法。
不过我调试了一下,应该是or前面是假,执行后面的。
  1. <?php
  2. $value="1";
  3. $value1=444;
  4. $value2=555;
  5. $value3=666;

  6. var_dump(empty($value));

  7. empty($value) OR $value1 = (int) $value2;

  8. var_dump($value);
  9. var_dump($value1);
  10. var_dump($value2);

  11. ?>
复制代码
回复 支持 1 反对 0

使用道具 举报

发表于 2017-3-25 09:18:48 | 显示全部楼层
你是指的 OR 么?
发表于 2017-3-25 10:26:47 | 显示全部楼层
本帖最后由 88646958@qq.com 于 2017-3-25 10:41 编辑

这就是CI的代码的优雅和巧妙, 说不出用什么词来形容。这个地方看不懂应该是OR吧。
这里 如果OR前面为真 则执行OR后面的。这比if是不是要省去了很多代码数。所以 is_null 和empty 这两行就这么理解。
$this代表当前类整个对象。面向对象的多对多,一对多,多对一这种多级关联时,return $this就有意义
这就是为什么我们在数据库操作类可以实现那么多的联级式查询。
 楼主| 发表于 2017-3-25 12:51:26 | 显示全部楼层
Hex 发表于 2017-3-25 09:18
你是指的 OR 么?

是的,刚开始没理解or的用法,以为是布尔运算呢,看到88646958@qq.com的我搞懂了
发表于 2017-3-25 18:33:44 | 显示全部楼层
如果你接触点js代码,就会觉得这是多么常见的一种写法:
let a = b || { };
发表于 2017-3-31 15:27:41 | 显示全部楼层
雨随风飘 发表于 2017-3-25 12:54
谢谢你的回答,我懂了,讲的非常明白和透彻,第一次看到这种用法。
不过我调试了一下,应该是or前面是假 ...

是的,说反了。 为假就执行!

本版积分规则