PHP開發(fā)基礎(chǔ)教程之常量
概念
常量可以理解為:長久不變的值,常量值被定義后,在腳本的其他任何地方都不能被改變。
一、常量組成
常量的書寫形式為 define(常量名,常量)
注:
?常量名可以小寫,但是通常大寫
?常量名可以不加引號,但是通常加上引號。
?在字符串中調(diào)用常量的時候,必須在引號外面
?常量名建議只用字母和下劃線
我們來定義和調(diào)用一個常量:
實例:
<?php //定義一個常量 define('Name','PHP.com'); //正確的調(diào)用方式 echo '我們是'.Name; echo '<br/>'; //錯誤的調(diào)用方式 echo '我們是Name'; ?>
接下來,我們來驗證下關(guān)于常量的幾個說法
實例:
<?php //其實可以小寫,但是不好區(qū)分出來,所以習(xí)慣上大家都大寫 define('age',27); echo age; //常量可以在外面不加引號 define(A,'安徽省'); echo A; //只能用于標量,用于其他會報錯,例如數(shù)組 define('HF',array(1,2,3)); echo HF; ?>
注1:常量定義是未加引號,可以正常輸出,但是PHP會提醒我們定義不規(guī)范,此處Ntice
可以通過修改PHP配置文件消除,各位有興趣的話,可以自己搜索,嘗試解決。
注2:前面提到的七種數(shù)據(jù)類型,還可以分為三大類
標量數(shù)據(jù)類型:布爾型、整型、浮點型、字符串
復(fù)合數(shù)據(jù)類型:數(shù)組、對象
特殊數(shù)據(jù)類型:NUll、資源型、回調(diào)函數(shù)
注3:常量在定義后,默認是全局變量,可以在整個運行的腳本的任何地方使用。
二、部分內(nèi)置常量
系統(tǒng)還為我們準備了一些內(nèi)置的常量。這些常量都是規(guī)定好的。我們先熟悉幾個,還有更多的系統(tǒng)常量我們學(xué)習(xí)完上冊,入門后再慢慢的增加和學(xué)習(xí)。
常量名 | 說明 |
__LINE__ | 當前所在的行 |
__FILE__ | ?? 當前文件在服務(wù)器的路徑 |
__FUNCTIOIN__ | 當前函數(shù)名 |
__CLASS__ | 當前類名 |
__METHOD__ | ? ? ? ? ? ? ? 當前成員方法名 ? ? ? ? ? ? ? ? ? ? ?? |
PHP_OS | PHP運行的操作系統(tǒng) |
PHP_VERSION | 當前PHP的版本 |
__TRAIT__ | Trait 的名字,php5.4新加 |
__DIR__ | 文件所在的目錄 |
__NAMESPACE__ | 當前命名空間的名稱(區(qū)分大小寫) |
實例:
<?php //輸出當前所在行 echo __LINE__; echo "<br/>"; //輸出當前文件所在服務(wù)器的路徑 echo __FILE__; echo "<br/>"; //輸出當前PHP運行的操作系統(tǒng) echo PHP_OS; ?>
注:其他幾個,大家可以嘗試輸出看看,有幾個還沒有學(xué)到,后面章節(jié)學(xué)到再詳細介紹
三、利用defined()函數(shù)來做安全機制
此處知識,暫時只做了解。學(xué)習(xí)完函數(shù)后,再來看本部份代碼也可以。
defined()我們來學(xué)習(xí)這種用法,主是是為了防止其他人繞過安全檢查文件。
函數(shù):defined(常量)
功能:向函數(shù)的括號后面?zhèn)魅氤A浚绻A慷x了就返回true,否則返回false
假設(shè)情況:
我們有一套在線電子商城的軟件需要付錢,檢查是否付費是通過對軟件授權(quán)檢查來完成的,而文件version.php中就有檢查授權(quán)的功能,我們在軟件中規(guī)定,沒有授權(quán)檢查文件version.php就不能使用這個軟件。所有的代碼都包含了version.php。并且為了防止有人盜版,我還可以把version.php的代碼進行了加密。
我們有兩個文件:
一個文件中間有版本號,版本聲明和授權(quán)聲明。文件名為version.php
一個文件中有具體的業(yè)務(wù)功能。例如:用戶注冊、登陸等,文件名為users.php
我們該怎么做呢?——也就是說不包含 version.php文件就不讓,執(zhí)行users.php之后的代碼。
我們來實驗:
1.version.php文件
代碼如下:
<?php //此處是檢查是否是否授權(quán)的業(yè)務(wù)部份代碼xxxx define('AUTH',true); //略過模擬代碼xxx行 ?>
2.ser.php
代碼如下:
<?php //嘗試將include 'version.php'這一行代碼注釋后再執(zhí)行看看,對比結(jié)果 include 'version.php'; if(!defined('AUTH')){ echo '非法!非法!你嘗試跳過授權(quán)文件'; exit; }
結(jié)果可知:version.php必須要包含 ,不然不會顯示后面的echo '用戶注冊';
注:
函數(shù):include('傳入文件路徑和文件名')
功能:這個函數(shù)的功能是傳入指定路徑的文件,讓PHP包含進來執(zhí)行
后面會詳細解釋inclde