什麼是常量
什麼是常量?
常量可以理解爲值不變的量(如圓周率);或者是常量值被定義後,在腳本的其他任何地方都不可以被改變。
PHP中的常量分爲自定義常量和系統常量。
自定義常量是根據我們開發的需要,而定義的常量,它通過使用PHP中的函數define()定義。
注:函數,我們可以理解爲一個混凝土攪拌機,亦或是一個篩子,通過入口提供原料,然後出口產出結果,在函數中也允許入口不提供任何數據,出口也允許不返回任何值。
define()函數的語法格式爲:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
它有3個參數(也就是原料):
第一個參數“constant_name”爲必選參數,常量名稱,即標誌符,常量的命名規則與變量的一致,但是要注意哦,它可不帶美元符號哦。
第二個參數“value”爲必選參數,它是常量的值。
第三個參數“case_sensitive”爲可選參數,指定是否大小寫敏感,設定爲true表示不敏感,一般不指定第三個參數的情況下,默認第三個參數的值爲false。
(注: string表示參數類型爲字符串類型,mixed表示參數類型可以接受爲多種不同的類型,case_sensitive = true表示默認爲布爾類型TRUE)
常量的作用
常量有什麼用呢?
常量主要功效是可以避免重複定義,篡改變量值。
在我們進行團隊開發時,或者代碼量很大的時候,對於一些第一次定義後不改變的量,如果我們使用變量,在不知情的情況下,使用同一變量名時,變量值就會被替換掉,從而會引發服務器執行錯誤的任務。
此外,使用常量還能提高代碼的可維護性。
如果由於某些原因,常量的值需要變更時候,我們只需要修改一個地方。
例如在做計算中,起初我們取圓周率爲3.14,於是很多計算中我們都使用3.14進行計算,當要求計算精度提高,圓周率需要取3.142的時候,我們不得不修改所有使用3.14的代碼,倘若代碼量比較多時,不僅工作量大,還可能遺漏。
系統常量
系統常量是PHP已經定義好的常量,我們可以直接拿來使用,常見的系統常量有:
(1)__FILE__ : php程序文件名。它可以幫助我們獲取當前文件在服務器的物理位置。
(2)__LINE__ : PHP程序文件行數。它可以告訴我們,當前代碼在第幾行。
(3)PHP_VERSION : 當前解析器的版本號。它可以告訴我們當前PHP解析器的版本號,我們可以提前知道我們的PHP代碼是否可被該PHP解析器解析。
(4)PHP_OS : 執行當前PHP版本的操作系統名稱。它可以告訴我們服務器所用的操作系統名稱,我們可以根據該操作系統優化我們的代碼。
常量如何取值
定義了常量,那麼就要使用常量,那麼如何獲取常量值呢?
獲取常量值的有兩種方法取值:
第一種是使用常量名直接獲取值;
例如計算圓周率的面積,如下(“*”是運算符,相當於乘號,後面部分的小節會介紹):
<?php define("PI",3.14); $r=1; $area = PI*$r*$r; //計算圓的面積 ?>
第二種是使用constant()函數。
它和直接使用常量名輸出的效果是一樣的,但函數可以動態的輸出不同的常量,在使用上要靈活、方便,
其語法格式如下:
mixed constant(string constant_name)
第一個參數constant_name爲要獲取常量的名稱,也可爲存儲常量名的變量。
如果成功則返回常量的值,失敗則提示錯誤信息常量沒有被定義。(注:mixed表示函數返回值類型爲多種不同的類型,string表示參數類型爲字符串類型)
例如:
如何判定常量是否被定義
如果常量被重複定義以後,PHP解析器會發出“Constant XXX already defined”的警告,提醒我們該常量已經被定義過。
那麼,在團隊開發,或代碼量很大的情況下,我們如何去判定一個常量是否被定義呢?
defined()函數可以幫助我們判斷一個常量是否已經定義,其語法格式爲:
bool defined(string constants_name)
它只有參數constant_name,指的是要獲取常量的名稱,若存在則返回布爾類型true,否則返回布爾類型false; (注:bool表示函數返回值類型爲布爾類型)