php5中const、define跟static

來源:互聯網
上載者:User
php5中const、define和static
一、const
在編程中,我們一般用常量來定義那些在運行時不能被改變的常數值,下面讓我們來看看php中的const吧,這個東西其 實沒有什麼好說的,只是為了知識的完善而隨便說下吧。在定義一個常量的時候我們可以使用const來修飾這個常量,使用const修飾的常量更其它的常量有點不同的地方就是:常量名前不要使用”$”,切記!當然這個常量值也是不能修改的,一旦定義就不能程式的任何地方進行“人為”的修改。這跟使用 define定義是一樣,還有就是使用const來定義當然也遵守其它常量的命名規則――使用大字的字母。

看個小例子吧:
class say_const{
const CHARSET = "中國";
public function say_hello(){
echo slef::CHARSET;
}
}
$const1 = new say_const();
$const1->say_hello();

作為其它要說明的,請看下面這個擴充閱讀:
常量前面沒有貨幣符號($);
常量只能用 define() 函數定義,而不能通過指派陳述式;
常量可以不用理會變數範圍的規則而在任何地方定義和訪問;
常量一旦定義就不能被重新定義或者取消定義;
常量的值只能是標量;
常量只能包含標量資料(boolean,integer,float 和 string),不要定義 resource常量.
可以用函數 constant() 來讀取常量的值.get_defined_constants()可以獲得所有已定義的常量列表.
如果使用了一個未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字串調用它一樣(CONSTANT 對應 “CONSTANT”),此時將發出一個 E_NOTICE 級的錯誤.


PHP 的“魔術常量”.
__LINE__
__FILE__
__FUNCTION__
__CLASS__
__METHOD__


在物件導向中
介面:
1 不能夠定義靜態變數在類的 成員變數(常量除外)
2 定義的常量 const YOUCONST = VALUE,不能在子類中覆蓋,在子類中以 interfaceName::YOUCONST的方式調用
3 不能使用parent::YOUCONST的方式調用介面的常量

類:
1 const 變數可以使用parent::YOUCONST的方式,className::YOUCONST的方式在子類中訪問
2 const定義的變數,在子類中可以被覆蓋
3 當然在類中可以定義靜態成員變數了


二、define
什麼是自訂常量?

所謂自訂常量,就是指用一個字元標識來代表另外一個對象,這個對象可以是一個數值,一個字串,一個布爾值等等。它的定義與變數有著許多相似之處。只有一點不一樣,那就是變數的值在程式運行過程中可以任意更改,而自訂常量一旦定義下來後,在程式運行中就再也不能修改了。
定義方式如下:
define("YEAR","2012");
使用define關鍵字來將2012這個字串綁定到YEAR上來,以後在程式當中出現YEAR的地方就用2012來代替。一般情況下,我們定義常量時,常量名都使用大寫字母。例,
define("YEAR","2012");
define("MONTH","12");
define("DATE","21");
define("THING","Doomsday");
echo YEAR."-".MONTH."-".DATE." ".THING;
?>



三、static
static關鍵字在類中是,描述一個成員是靜態,static能夠限制外部的訪問,因為static後的成員是屬於類的,是不屬於任何對象執行個體,其他類是無法訪問的,只對類的執行個體共用,能一定程式對該成員盡心保護。類的靜態變數,非常類似全域變數,能夠被所有類的執行個體共用,類的靜態方法也是一樣的,類似於全域函數。類的靜態方法能訪問類的靜態屬性。另外說明的是,static的成員,必須使用self來訪問,使用this會出錯。


static變數與局部變數的區別是,當靜態變數離開了它的作用範圍後,它的值不會自動消亡,而是繼續存在,當下次再用到它的時候,可以保留最近一次的值。
例如:
    \n" ); //使用直接輸入類名來訪問靜態方法Counter::getCount            //列印類的版本      print( "Version useed: " .Counter::VERSION. "
\n" ); ?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.