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