雨随风飘 发表于 2017-3-25 01:19:14

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类型?

雨随风飘 发表于 2017-3-25 12:54:13

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);

?>

Hex 发表于 2017-3-25 09:18:48

你是指的 OR 么?

88646958@qq.com 发表于 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的我搞懂了

yuzhigang5460 发表于 2017-3-25 18:33:44

如果你接触点js代码,就会觉得这是多么常见的一种写法:
let a = b || { };

88646958@qq.com 发表于 2017-3-31 15:27:41

雨随风飘 发表于 2017-3-25 12:54
谢谢你的回答,我懂了,讲的非常明白和透彻,第一次看到这种用法。
不过我调试了一下,应该是or前面是假 ...

是的,说反了。 为假就执行!
页: [1]
查看完整版本: ci代码中这样写是什么意思