php中static,const與define的使用方法有什么區(qū)別-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)php中static,const與define的使用方法有什么區(qū)別,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的石城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

                                                           php中static,const與define的使用方法有什么區(qū)別

define部分:
宏不僅可以用來(lái)代替常數(shù)值,還可以用來(lái)代替表達(dá)式,甚至是代碼段。(宏的功能很強(qiáng)大,但也容易出錯(cuò),所以其利弊大小頗有爭(zhēng)議。)
宏的語(yǔ)法為:
#define 宏名稱(chēng) 宏值
作為一種建議和一種廣大程序員共同的習(xí)慣,宏名稱(chēng)經(jīng)常使用全部大寫(xiě)的字母。

利用宏的優(yōu)點(diǎn):
1)讓代碼更簡(jiǎn)潔明了
當(dāng)然,這有賴(lài)于你為宏取一個(gè)適當(dāng)?shù)拿?。一般?lái)說(shuō),宏的名字更要注重有明確直觀的意義,有時(shí)寧可讓它長(zhǎng)點(diǎn)。
2)方便代碼維護(hù)
對(duì)宏的處理,在編譯過(guò)程中稱(chēng)為“預(yù)處理”。也就是說(shuō)在正式編譯前,編譯器必須先將代碼出現(xiàn)的宏,用其相應(yīng)的宏值替換,這個(gè)過(guò)程有點(diǎn)你我在文字處理軟件中的查找替換。所以在代碼中使用宏表達(dá)常數(shù),歸根結(jié)底還是使用了立即數(shù),并沒(méi)有明確指定這個(gè)量的類(lèi)型。
const部分
常量定義的格式為:
const 數(shù)據(jù)類(lèi)型 常量名 = 常量值;
而const定義的常量具有數(shù)據(jù)類(lèi)型,定義數(shù)據(jù)類(lèi)型的常量便于編譯器進(jìn)行數(shù)據(jù)檢查,使程序可能出現(xiàn)錯(cuò)誤進(jìn)行排查。常量必須一開(kāi)始就指定一個(gè)值,然后,在以后的代碼中,我們不允許改變此常量的值。
兩者之間的區(qū)別:
內(nèi)存空間的分配上。define進(jìn)行宏定義的時(shí)候,不會(huì)分配內(nèi)存空間,編譯時(shí)會(huì)在main函數(shù)里進(jìn)行替換,只是單純的替換,不會(huì)進(jìn)行任何檢查,比如類(lèi)型,語(yǔ)句結(jié)構(gòu)等,即宏定義常量只是純粹的置放關(guān)系,

如#define null 0;編譯器在遇到null時(shí)總是用0代替null它沒(méi)有數(shù)據(jù)類(lèi)型,還有疑問(wèn)請(qǐng)找C語(yǔ)言書(shū)籍看預(yù)處理部分或者看MSDN.而const定義的常量具有數(shù)據(jù)類(lèi)型,定義數(shù)據(jù)類(lèi)型的常量便于編譯器進(jìn)行數(shù)據(jù)檢查,使程序可能出現(xiàn)錯(cuò)誤進(jìn)行排查,所以const與define之間的區(qū)別在于const定義常量排除了程序之間的不安全性.

define定義全局常量,在任何地方都可以訪(fǎng)問(wèn)const用于類(lèi)成員變量定義,只能用類(lèi)名訪(fǎng)問(wèn)不能更改要是初學(xué)這樣顯理解著就行別太鉆牛角尖就行 PHP5中加入了很多面向?qū)ο蟮乃枷?PHP5的面向?qū)ο蟊容^接近Java的面向?qū)ο笏枷搿N覀冞@里對(duì)PHP5中的static和const關(guān)鍵字作用進(jìn)行一下描述,希望對(duì)學(xué)習(xí)PHP5的朋友有幫助。


(1) staticstatic關(guān)鍵字在類(lèi)中是,描述一個(gè)成員是靜態(tài)的,static能夠限制外部的訪(fǎng)問(wèn),因?yàn)閟tatic后的成員是屬于類(lèi)的,是不屬于任何對(duì)象實(shí)例,其他類(lèi)是無(wú)法訪(fǎng)問(wèn)的,只對(duì)類(lèi)的實(shí)例共享,能一定程序?qū)υ摮蓡T盡心保護(hù)。類(lèi)的靜態(tài)變量,非常類(lèi)似全局變量,能夠被所有類(lèi)的實(shí)例共享,類(lèi)的靜態(tài)方法也是一樣的,類(lèi)似于全局函數(shù)。類(lèi)的靜態(tài)方法能訪(fǎng)問(wèn)類(lèi)的靜態(tài)的屬性。另外說(shuō)明的是,static的成員,必須使用self來(lái)訪(fǎng)問(wèn),使用this會(huì)出錯(cuò)。


(2)constconst是一個(gè)定義常量的關(guān)鍵字,類(lèi)似于C中的#define,能夠定義一個(gè)常量,如果在程序中改變了它的值,那么會(huì)出現(xiàn)錯(cuò)誤。舉例說(shuō)明上面的代碼:

代碼如下:

<?php 
class Counter 
{ 
private static $count = 0;//定義一個(gè)靜態(tài)屬性 
const VERSION = 2.0;//定義一個(gè)常量 
//構(gòu)造函數(shù) 
function __construct() 
{ 
self::$count++; 
} 
//析構(gòu)函數(shù) 
function __destruct() 
{ 
self::$count--; 
} 
//定義一個(gè)靜態(tài)的方法 
static function getCount() 
{ 
return self::$count; 
} 
} 
//創(chuàng)建一個(gè)實(shí)例 
$c = new Counter(); 
//執(zhí)行打印 
print( Counter::getCount(). "<br>\n" ); //使用直接輸入類(lèi)名來(lái)訪(fǎng)問(wèn)靜態(tài)方法Counter::getCount 
//打印類(lèi)的版本 
print( "Version useed: " .Counter::VERSION. "<br>\n" ); 
?>

關(guān)于php中static,const與define的使用方法有什么區(qū)別就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站題目:php中static,const與define的使用方法有什么區(qū)別-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://muchs.cn/article36/cspcsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、用戶(hù)體驗(yàn)企業(yè)網(wǎng)站制作、微信小程序、網(wǎng)站排名、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名