PHP類和對象(1)

  • 2020-07-29 10:02:18
  • 閱讀次數(shù):
  • 作者:盈嵐科技小編
  • 來源:http://m.supportcoffeeroasters.com

網(wǎng)站建設(shè)中,PHP 5開始引入了新的對象模型。完全重寫了PHP處理對象的方式,允許更佳性能和更多特性。本節(jié)將重點介紹PHP類和對象的定義和應(yīng)用,以幫助用戶掌握強(qiáng)大的對象化編程開發(fā)的方法和技巧。

定義和調(diào)用類

使用class關(guān)鍵字可以定義類,在類中可以聲明類成員和方法。例如,在下面示例中定義了類A,該類中包含一個方法f()。

<?phpclass A{    function f(){ echo "類方法";    }}?>

在類中,偽變量$this是一個對調(diào)用對象的引用,即引用類的實例。再看一個示例,在這個示例中分別聲明了類成員和方法。

<?phpclass A{    public $var = '默認(rèn)值';      //聲明成員    public function f(){         //聲明方法        echo $this->var;    }}?>

使用new關(guān)鍵字可以調(diào)用類,即使用new關(guān)鍵字創(chuàng)建一個對象的實例,然后就可以引用類成員和方法了。如:

<?php$a = new A();     //實例化類echo $a->var;    //引用對象的成員,顯示'默認(rèn)值'$a->f();         //引用對象的方法,顯示'默認(rèn)值'?>

當(dāng)把一個對象已經(jīng)創(chuàng)建的實例賦給一個新變量時,新變量會訪問同一個實例,就和用該對象賦值一樣。此行為和給函數(shù)傳遞入實例時一樣??梢杂每寺〗o一個已創(chuàng)建的對象建立一個新實例。在一個類中可以使用extends關(guān)鍵字繼承另一個類的方法和成員。但不能擴(kuò)展多個類,只能繼承一個基類。例如,在下面示例中,分別定義A和B類,其中A是基類,B是子類,然后就可以在B類中調(diào)用基類的成員或者方法。

<?phpclas A{                        //定義A類    public $var = '默認(rèn)值';    //聲明成員public function f(){       //聲明方法        echo $this->var;    }}clas B extends A{             //定義B類    function e() {            //聲明方法        parent::f();          //調(diào)用A類的方法f()    }}$b = new B();                //實例化B類$b->e();                     //調(diào)用對象$b的e()方法,顯示'默認(rèn)值'

類屬性

類的變量成員被稱為屬性,或者字段、特征,本書統(tǒng)一稱為屬性。屬性聲明是由關(guān)鍵字public、protected或者private開頭,然后跟一個變量來組成。屬性中的變量可以初始化,但是初始化的值必須是常數(shù),這里的常數(shù)是指在編譯階段時就為常數(shù),而不是在編譯階段之后在運(yùn)行階段運(yùn)算出的常數(shù)。

類成員都必須使用關(guān)鍵字public、protected或private進(jìn)行定義。由public關(guān)鍵字定義的類成員可以在任何地方被訪問。由protected定義的類成員可以被其所在類的子類和父類訪問,當(dāng)然該成員所在的類也可以訪問。由private定義的類成員則只能被其所在類訪問。

為了兼容PHP 4,PHP 5聲明屬性依然可以直接使用關(guān)鍵字var,或者放在public、protected、private之前。但是var并不是必需的。如果直接使用var聲明屬性,而沒有public、protected或pri-vate,PHP 5會認(rèn)為這個屬性為public。

在類的成員方法里面,可以通過$this->property(property是屬性名字)這種方式來訪問類的屬性、方法,但是要訪問類的靜態(tài)屬性或者在靜態(tài)方法里面卻不能使用,而是使用self::$property。在類的非靜態(tài)方法里面可以使用偽變量$this,這個偽變量是調(diào)用該方法的實例化對象引用。

<?phpclass MyClass{    public $public = 'Public';    protected $protected = 'Protected';    private $private = 'Private';    function printHello() {        echo $this->public;        echo $this->protected;        echo $this->private;    }}$obj = new MyClass();echo $obj->public;         //正常執(zhí)行,顯示:publicecho $obj->protected;      //會產(chǎn)生一個致命錯誤echo $obj->private;        //會產(chǎn)生一個致命錯誤$obj->printHello();        //輸出:public、protected和private?>

類常量

在類中還可以定義常量,常量的值將始終保持不變,常量的值必須是一個定值,不能是變量、類屬性或其他操作(如函數(shù)調(diào)用)的結(jié)果。在定義和使用常量時不需要使用$符號,常量的值不能為關(guān)鍵字self、parent或static。例如,在下面示例中定義并使用一個類常量。

<?phpclass MyClass{    const constant = '常量值';       //聲明類常量 function showConstant() {        echo  self:constant ."\n";   //在類方法中引用常量    }}echo MyClass::constant . "\n";      //直接讀取類常量$class = new MyClass();$class->showConstant();             //調(diào)用類的方法顯示常量值?>

當(dāng)前文章標(biāo)題:PHP類和對象(1)

當(dāng)前URL:http://m.supportcoffeeroasters.com/news/wzzz/3249.html

上一篇:PHP函數(shù)(2)

下一篇:PHP類和對象(2)

網(wǎng)站建設(shè)、抖音推廣、頭條推廣、微信朋友圈推廣、快手推廣專線:181-8386-5875(微信同號)