thinkphp中$this->reset && session($key, null); 這種寫法是什麼意思?

來源:互聯網
上載者:User
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;    }

我的理解是應該寫成這樣:

$this->reset ? session($key, null):1;

回複內容:

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

我的理解是應該寫成這樣:

$this->reset ? session($key, null):1;

根據&&的執行規則,如果左邊返回true,則執行右邊操作,否則不執行右邊的操作。這樣寫既不會是二樓說的不規範,也不會是一樓說的用if代碼太多。

其實就是一個蹩腳的寫法,雖然執行結果和三元運算子一樣,沒一點好處
可讀性太差。

不贊同樓下的寫法,既然有三元運算子,為什麼還要用if?
一行代碼可以搞定的問題,為什麼要用3行?

你可以看做三元運演算法理解,但是即使你看成三元的,也是一種不規範的寫法。

其合理的寫法應該是

if ($this->reset) {    session($key, null);}

贊同 @zj飛得更高 同學的答案。

不過實際上,推薦用andor操作符,他們的優先順序更低,更適合進行語句的連結。

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

一般稱作短路運算
用於替代簡化內容體只有一句的if語句.

不認為這是一種不規範的寫法,存在即合理,這個運算子的用法就是這樣的,只不過大多數用在條件判斷裡而已

記得在哪裡看到過這種寫法的效率是高於if的,沒實測過,雖然這種效能效率可忽略
有些時候if嵌套的很多,但裡面的內容卻只有一句,用這個或者三目運算可讀性反而會好點

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.