thinkphp中$this->reset && session($key, null); 这种写法是什么意思?

WBOY
풀어 주다: 2016-06-06 20:21:31
원래의
1926명이 탐색했습니다.

<code>public function check($code, $id = '') {
        $key = $this->authcode($this->seKey).$id;
        // 验证码不能为空
        $secode = session($key);
        if(empty($code) || empty($secode)) {
            return false;
        }
        // session 过期
        if(NOW_TIME - $secode['verify_time'] > $this->expire) {
            session($key, null);
            return false;
        }

        if($this->authcode(strtoupper($code)) == $secode['verify_code']) {
            $this->reset && session($key, null);//这个地方为什么用&&,而不是三元运算符?
            return true;
        }

        return false;
    }</code>
로그인 후 복사
로그인 후 복사

我的理解是应该写成这样:

<code>$this->reset ? session($key, null):1;</code>
로그인 후 복사
로그인 후 복사

回复内容:

<code>public function check($code, $id = '') {
        $key = $this->authcode($this->seKey).$id;
        // 验证码不能为空
        $secode = session($key);
        if(empty($code) || empty($secode)) {
            return false;
        }
        // session 过期
        if(NOW_TIME - $secode['verify_time'] > $this->expire) {
            session($key, null);
            return false;
        }

        if($this->authcode(strtoupper($code)) == $secode['verify_code']) {
            $this->reset && session($key, null);//这个地方为什么用&&,而不是三元运算符?
            return true;
        }

        return false;
    }</code>
로그인 후 복사
로그인 후 복사

我的理解是应该写成这样:

<code>$this->reset ? session($key, null):1;</code>
로그인 후 복사
로그인 후 복사

根据&&的执行规则,如果左边返回true,则执行右边操作,否则不执行右边的操作。这样写既不会是二楼说的不规范,也不会是一楼说的用if代码太多。

其实就是一个蹩脚的写法,虽然执行结果和三元运算符一样,没一点好处
可读性太差。

不赞同楼下的写法,既然有三元运算符,为什么还要用if?
一行代码可以搞定的问题,为什么要用3行?

你可以看做三元运算法理解,但是即使你看成三元的,也是一种不规范的写法。

其合理的写法应该是

<code>if ($this->reset) {
    session($key, null);
}</code>
로그인 후 복사

赞同 @zj飞得更高 同学的答案。

不过实际上,推荐用andor操作符,他们的优先级更低,更适合进行语句的链接。

更主要的是可读性不低啊,and是“就做...”,or是“否则做...”

一般称作短路运算
用于替代简化内容体只有一句的if语句.

不认为这是一种不规范的写法,存在即合理,这个运算符的用法就是这样的,只不过大多数用在条件判断里而已

记得在哪里看到过这种写法的效率是高于if的,没实测过,虽然这种性能效率可忽略
有些时候if嵌套的很多,但里面的内容却只有一句,用这个或者三目运算可读性反而会好点

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿