您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關php中static,const與define的使用方法有什么區別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
define部分:
宏不僅可以用來代替常數值,還可以用來代替表達式,甚至是代碼段。(宏的功能很強大,但也容易出錯,所以其利弊大小頗有爭議。)
宏的語法為:
#define 宏名稱 宏值
作為一種建議和一種廣大程序員共同的習慣,宏名稱經常使用全部大寫的字母。
利用宏的優點:
1)讓代碼更簡潔明了
當然,這有賴于你為宏取一個適當的名字。一般來說,宏的名字更要注重有明確直觀的意義,有時寧可讓它長點。
2)方便代碼維護
對宏的處理,在編譯過程中稱為“預處理”。也就是說在正式編譯前,編譯器必須先將代碼出現的宏,用其相應的宏值替換,這個過程有點你我在文字處理軟件中的查找替換。所以在代碼中使用宏表達常數,歸根結底還是使用了立即數,并沒有明確指定這個量的類型。
const部分
常量定義的格式為:
const 數據類型 常量名 = 常量值;
而const定義的常量具有數據類型,定義數據類型的常量便于編譯器進行數據檢查,使程序可能出現錯誤進行排查。常量必須一開始就指定一個值,然后,在以后的代碼中,我們不允許改變此常量的值。
兩者之間的區別:
內存空間的分配上。define進行宏定義的時候,不會分配內存空間,編譯時會在main函數里進行替換,只是單純的替換,不會進行任何檢查,比如類型,語句結構等,即宏定義常量只是純粹的置放關系,
如#define null 0;編譯器在遇到null時總是用0代替null它沒有數據類型,還有疑問請找C語言書籍看預處理部分或者看MSDN.而const定義的常量具有數據類型,定義數據類型的常量便于編譯器進行數據檢查,使程序可能出現錯誤進行排查,所以const與define之間的區別在于const定義常量排除了程序之間的不安全性.
define定義全局常量,在任何地方都可以訪問const用于類成員變量定義,只能用類名訪問不能更改要是初學這樣顯理解著就行別太鉆牛角尖就行 PHP5中加入了很多面向對象的思想,PHP5的面向對象比較接近Java的面向對象思想。我們這里對PHP5中的static和const關鍵字作用進行一下描述,希望對學習PHP5的朋友有幫助。
(1) staticstatic關鍵字在類中是,描述一個成員是靜態的,static能夠限制外部的訪問,因為static后的成員是屬于類的,是不屬于任何對象實例,其他類是無法訪問的,只對類的實例共享,能一定程序對該成員盡心保護。類的靜態變量,非常類似全局變量,能夠被所有類的實例共享,類的靜態方法也是一樣的,類似于全局函數。類的靜態方法能訪問類的靜態的屬性。另外說明的是,static的成員,必須使用self來訪問,使用this會出錯。
(2)constconst是一個定義常量的關鍵字,類似于C中的#define,能夠定義一個常量,如果在程序中改變了它的值,那么會出現錯誤。舉例說明上面的代碼:
代碼如下:
<?php class Counter { private static $count = 0;//定義一個靜態屬性 const VERSION = 2.0;//定義一個常量 //構造函數 function __construct() { self::$count++; } //析構函數 function __destruct() { self::$count--; } //定義一個靜態的方法 static function getCount() { return self::$count; } } //創建一個實例 $c = new Counter(); //執行打印 print( Counter::getCount(). "<br>\n" ); //使用直接輸入類名來訪問靜態方法Counter::getCount //打印類的版本 print( "Version useed: " .Counter::VERSION. "<br>\n" ); ?>
關于php中static,const與define的使用方法有什么區別就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。