PHP學(xué)習(xí)記錄第四章-學(xué)習(xí)PHP常量
什么是常量?常量可以理解為值不變的量(如圓周率);或者是常量值被定義后,在腳本的其他任何地方都不可以被改變。PHP中的常量分為自定義常量和系統(tǒng)常量(后續(xù)小節(jié)會詳細(xì)介紹)。
自定義常量是根據(jù)我們開發(fā)的需要,而定義的常量,它通過使用PHP中的函數(shù)define()定義。(注:函數(shù),我們可以理解為一個混凝土攪拌機,亦或是一個篩子,通過入口提供原料,然后出口產(chǎn)出結(jié)果,在函數(shù)中也允許入口不提供任何數(shù)據(jù),出口也允許不返回任何值。)
define()函數(shù)的語法格式為:
bool define(string $constant_name, mixed $value[, $case_sensitive = true])
第一個參數(shù)“constant_name”為必選參數(shù),常量名稱,即標(biāo)志符,常量的命名規(guī)則與變量的一致,但是要注意哦,它可不帶美元符號哦。第二個參數(shù)“value”為必選參數(shù),它是常量的值。第三個參數(shù)“case_sensitive”為可選參數(shù),指定是否大小寫敏感,設(shè)定為true表示不敏感,一般不指定第三個參數(shù)的情況下,默認(rèn)第三個參數(shù)的值為false。
(注: string表示參數(shù)類型為字符串類型,mixed表示參數(shù)類型可以接受為多種不同的類型,case_sensitive = true表示默認(rèn)為布爾類型TRUE)
20、第20段PHP學(xué)習(xí)代碼 常量 ;
<?php
$p = "PII";
define("PI",3.14);
define($p,3.14);
echo PI;
echo "<br />";
echo PII;
?>
當(dāng)我們需要計算圓面積時,我們就需要使用圓周率,這時我們就可以將圓周率定義為常量“PI”(通常常量都全用大寫),取值為3.14;
常量主要功效是可以避免重復(fù)定義,篡改變量值。在我們進(jìn)行團隊開發(fā)時,或者代碼量很大的時候,對于一些第一次定義后不改變的量,如果我們使用變量,在不知情的情況下,使用同一變量名時,變量值就會被替換掉,從而會引發(fā)服務(wù)器執(zhí)行錯誤的任務(wù)。
此外,使用常量還能提高代碼的可維護(hù)性。如果由于某些原因,常量的值需要變更時候,我們只需要修改一個地方。例如在做計算中,起初我們?nèi)A周率為3.14,于是很多計算中我們都使用3.14進(jìn)行計算,當(dāng)要求計算精度提高,圓周率需要取3.142的時候,我們不得不修改所有使用3.14的代碼,倘若代碼量比較多時,不僅工作量大,還可能遺漏。
21、第21段PHP學(xué)習(xí)代碼 ;
<?php
define("PI",3.14);
$r=3;
echo "面積為:".(PI*$r*$r)."<br />";
echo "周長為:".(2*PI*$r)."<br />";
?>
結(jié)果為:
22、第22段PHP學(xué)習(xí)代碼 系統(tǒng)常量;
<?php
echo __FILE__;
echo "<br />";
echo __LINE__;
echo "<br />";
echo PHP_VERSION;
echo "<br />";
echo PHP_OS;
echo "<br />";
?>
系統(tǒng)常量是PHP已經(jīng)定義好的常量,我們可以直接拿來使用,常見的系統(tǒng)常量有:
(1)__FILE__ :php程序文件名。它可以幫助我們獲取當(dāng)前文件在服務(wù)器的物理位置。
(2)__LINE__ :PHP程序文件行數(shù)。它可以告訴我們,當(dāng)前代碼在第幾行。
(3)PHP_VERSION:當(dāng)前解析器的版本號。它可以告訴我們當(dāng)前PHP解析器的版本號,我們可以提前知道我們的PHP代碼是否可被該PHP解析器解析。
(4)PHP_OS:執(zhí)行當(dāng)前PHP版本的操作系統(tǒng)名稱。它可以告訴我們服務(wù)器所用的操作系統(tǒng)名稱,我們可以根據(jù)該操作系統(tǒng)優(yōu)化我們的代碼。
23、第23段PHP學(xué)習(xí)代碼 如何獲取常量值;
獲取常量值的有兩種方法取值。第一種是使用常量名直接獲取值;例如計算圓周率的面積,如下(“*”是運算符,相當(dāng)于乘號,后面部分的小節(jié)會介紹):
<?php
define("PI",3.14);
$r=1;
$area = PI*$r*$r; //計算圓的面積
?>
第二種是使用constant()函數(shù)。它和直接使用常量名輸出的效果是一樣的,但函數(shù)可以動態(tài)的輸出不同的常量,在使用上要靈活、方便,其語法格式如下:
mixed constant(string constant_name)
第一個參數(shù)constant_name為要獲取常量的名稱,也可為存儲常量名的變量。如果成功則返回常量的值,失敗則提示錯誤信息常量沒有被定義。(注:mixed表示函數(shù)返回值類型為多種不同的類型,string表示參數(shù)類型為字符串類型)如:
<?php
$p="";
//定義圓周率的兩種取值
define("PI1",3.14);
define("PI2",3.142);
//定義值的精度
$height = "中";
//根據(jù)精度返回常量名,將常量變成了一個可變的常量
if($height == "中"){
$p = "PI1";
}else if($height == "低"){
$p = "PI2";
}
$r=1;
$area = constant($p)*$r*$r;
echo $area;
?>
24、第24段PHP學(xué)習(xí)代碼 如何判定常量是否被定義;
<?php
define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
?>
如果常量被重復(fù)定義以后,PHP解析器會發(fā)出“Constant XXX already defined”的警告,提醒我們該常量已經(jīng)被定義過。那么,在團隊開發(fā),或代碼量很大的情況下,我們?nèi)绾稳ヅ卸ㄒ粋€常量是否被定義呢?
defined()函數(shù)可以幫助我們判斷一個常量是否已經(jīng)定義,其語法格式為
bool defined(string constants_name)
它只有參數(shù)constant_name,指的是要獲取常量的名稱,若存在則返回布爾類型true,否則返回布爾類型false; (注:bool表示函數(shù)返回值類型為布爾類型)