defined() or define();是什麼意思?

來源:互聯網
上載者:User
是如何沒有定義我就定義嗎?
類似於 C語言中的if define 嗎??
要是在PHP 手冊裡面能找到就好了。。
比如:
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');

回複內容:

是如何沒有定義我就定義嗎?
類似於 C語言中的if define 嗎??
要是在PHP 手冊裡面能找到就好了。。
比如:
defined('THINK_PATH') or define('THINK_PATH', dirname(__FILE__).'/');

這裡的知識點還有一個“短路求值”

PHP或C或很多現代語言都有這個特性,在計算邏輯或運算式的時候,計算左側如果是true,那麼就不再計算右側,直接返回true,所以A or B;可以達到if(!A) B;的效果

同理,計算邏輯與的時候,如果左側是false,那麼同樣會發生短路,不計算右側直接返回false A and B;類似if(A) B;

短路求值在語意上比較接近英文,又迴避了“if必加花括弧”帶來的視覺汙染(?),所以還算比較通行的做法(雖然嚴格意義上來說不算是好習慣)

http://php.net/manual/zh/function.defined.php
http://php.net/manual/zh/function.define.php

=w= 手冊上有的...defined() 檢測某個常量的名稱是否存在. 如果已定義返回 true 未定義返回 false

defined('THINK_PATH') or define('THINK_PATH', dirname(FILE).'/');

先檢查常量 THINK_PATH 是否被定義, 如果沒有被定義,就定義一個常量 THINK_PATH 值dirname(FILE).'/'

類似於if(!A){B}的語句,但是書寫成A or B 的話更加的簡介,如果定義了THINK_PATH,那麼條件為真,就不走後面,如果沒有定義THINK_PATH就會走後面的語句。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.