国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

面向?qū)ο蟮腜HP

2020-03-22 18:26:38
字體:
供稿:網(wǎng)友
  • 類的實(shí)例(包括繼承)
    <?php  // 父類  html' target='_blank'>class Animal {    public $name;    public $age;    // 構(gòu)造函數(shù),使用new操作符生成實(shí)例的時(shí)候自動(dòng)調(diào)用    function __construct($name, $age) {      $this->name = $name;      $this->age = $age;    }    public function show() {      echo $this->name . ' ' . $this->age . '<br/>' ;    }    // 析構(gòu)函數(shù),對(duì)象銷毀的時(shí)候自動(dòng)調(diào)用    function __destruct() {      echo 'object destroyed' . '<br/>';    }  }  // 子類  class Dog extends Animal {    public $legs;    function __construct($name, $age, $legs) {      // 調(diào)用父類的方法      parent::__construct($name, $age);      $this->legs = $legs;    }    public function showLegNumber() {      echo $this->legs . '<br/>';    }  }  $myDog = new Dog('candy', 10, 4);  $myDog->show();  $myDog->showLegNumber();   $myDog = null;        $hisDog = new Dog('sally', 5, 4);  $hisDog->show();   ?>

      在執(zhí)行對(duì)象方法時(shí),PHP將會(huì)自動(dòng)定義一個(gè)$this的特殊變量(類似js的this),該變量表示對(duì)對(duì)象本身的引用,通過使用$this變量和'->'符號(hào)可以引用對(duì)象本身的所有屬性和方法(類似js的this.)。

      析構(gòu)函數(shù)是一個(gè)名為__destruct()的函數(shù),它是在對(duì)象被注銷時(shí)所調(diào)用的。通常PHP會(huì)在所有請(qǐng)求都結(jié)束時(shí)自動(dòng)釋放該對(duì)象所占有的資源,所以析構(gòu)函數(shù)顯的并不是那么重要。但是在某些情況下還是有用處的,如釋放指定的資源或者記錄日志信息。在上例中,就算沒有將$hisDog對(duì)象賦值為null,在腳本執(zhí)行結(jié)束時(shí)也將會(huì)自動(dòng)調(diào)用其析構(gòu)函數(shù)。

      類的繼承需使用關(guān)鍵字extends,通常在PHP中使用parent表示父類,常用于訪問父類的方法和屬性;使用self表示子類,常用于訪問當(dāng)前類中的常量、靜態(tài)變量和方法。

    類的常量和靜態(tài)屬性、方法類的常量

      在PHP中,存在著全局常量,使用define關(guān)鍵字定義。而在PHP5中,還可以在類中定義常量。類的常量不屬于任何的類的實(shí)例,只屬于類的本身,且不可修改。定義類的常量很簡(jiǎn)單,只需要使用const關(guān)鍵字進(jìn)行定義即可。對(duì)于類的常量的引用分為兩種情況:一種是在類的內(nèi)部進(jìn)行引用,另一種是在類的外部進(jìn)行引用。不管是何時(shí)進(jìn)行引用,都需要使用范圍解析操作符(::)。

    <?php  class Color {    const RED = 'red';    const BLUE = 'blue';    const WHITE = 'white';    function getWhite() {      // 內(nèi)部引用      return self::WHITE;    }  }   // 外部引用  echo Color::RED;  $obj = new Color();  echo $obj->getWhite();?>
    靜態(tài)屬性、方法

      每一個(gè)類的實(shí)例都有其所有屬性和方法的拷貝,但類還可以定義靜態(tài)屬性和靜態(tài)方法。靜態(tài)屬性(方法)和類的常量一樣,只屬于類的本身,通過關(guān)鍵字static定義。訪問方式和類的常量一樣。

    <?php  class myClass {    static $num = 0;    function __construct() {      self::$num++;    }    // 統(tǒng)計(jì)該類實(shí)例化的個(gè)數(shù)    static function printNum() {      echo self::$num . '<br/>';    }  }  myClass::printNum();  $a = new myClass();  myClass::printNum();  $b = new myClass();  myClass::printNum();  $c = new myClass();  myClass::printNum();?>
    訪問修飾符

      在使用面向?qū)ο?/u>的程序設(shè)計(jì)模式進(jìn)行開發(fā)時(shí),最為重要的一點(diǎn)就是封裝和對(duì)象屬性的訪問保護(hù),而訪問修飾符就是因此誕生的。通常對(duì)于類屬性和方法,訪問保護(hù)都是通過3個(gè)關(guān)鍵字來實(shí)現(xiàn)的:public、protected和private。在開發(fā)時(shí),需要制定屬性或方法的訪問權(quán)限,為了向下兼容,定義方法時(shí)未指定訪問權(quán)限將自動(dòng)設(shè)置為public(如定義屬性為指定會(huì)報(bào)錯(cuò))。

      指定為public的類屬性和方法為公共的屬性和方法,可以在任何作用域內(nèi)訪問。在對(duì)象外可以采用對(duì)象名->屬性名(方法名)訪問,在對(duì)象內(nèi)部可以用$this->屬性名(方法名)訪問。若一個(gè)類從該類繼承,則這個(gè)類的對(duì)象的外部和內(nèi)部訪問該類屬性或者方法可以采用相同的方式。

      指定為protected的類屬性和方法只能夠在對(duì)象內(nèi)部使用,即采用$this->(受保護(hù))屬性名(變量名)的方式進(jìn)行訪問。若一個(gè)類從該類繼承,則受保護(hù)的類屬性和方法也可以在類的對(duì)象的方法中采用如上方式訪問。

      指定為private的類屬性和方法和protected類似,只能在對(duì)象內(nèi)部訪問,同時(shí)也不能在繼承類的實(shí)例對(duì)象中進(jìn)行訪問,因?yàn)樗接袑傩院头椒ㄔ诶^承的類中時(shí)看不到的。

      總結(jié):public修飾定義可以從任何位置訪問到類屬性和方法;protected修飾符定義只能在類的內(nèi)部及該類子類中(繼承)進(jìn)行訪問;private修飾符定義只能在類的內(nèi)部進(jìn)行訪問。

    魔術(shù)方法

      在PHP中,除了提供靜態(tài)方法外,還提供了幾個(gè)有用的魔術(shù)方法。這里的魔術(shù)方法包括前面所講的構(gòu)造函數(shù)__construct()、析構(gòu)函數(shù)__destruct(),以及字符串轉(zhuǎn)換函數(shù)__toString()和克隆函數(shù)__clone()。

    字符串轉(zhuǎn)換函數(shù)__toString()

      當(dāng)用echo或者print輸出一個(gè)對(duì)象時(shí),將自動(dòng)調(diào)用__toString()方法(不覺得比var_dump()好用)

    <?php  class Child {    public $name;    public $age;    function __construct($name, $age) {      $this->name = $name;      $this->age = $age;    }    function __toString() {      return $this->name . ' ' . $this->age . '<br/>';    }  }  $myChild = new Child('hanzichi', 10);  print $myChild;  echo $myChild;  var_dump($myChild);?>
    克隆函數(shù)__clone()

      在實(shí)際應(yīng)用中,除了采用new關(guān)鍵字創(chuàng)建對(duì)象外,還可以使用clone關(guān)鍵字實(shí)現(xiàn)對(duì)象克隆,所克隆的對(duì)象將擁有原對(duì)象的所有屬性。

    <?php  class Child {    public $name;    public $age;    function __construct($name, $age) {      $this->name = $name;      $this->age = $age;    }    function show() {      echo $this->name . ' ' . $this->age . '<br/>';    }  }  $myChild = new Child('hanzichi', 10);  $hisChild = clone $myChild;  $hisChild->show();  // hanzichi 10?>

      有些時(shí)候我們并不需要克隆完全一樣的對(duì)象,這時(shí)我們可以在類中定義__clone方法,克隆的時(shí)候會(huì)自動(dòng)調(diào)用。

    <?php  class Child {    public $name;    public $age;    function __construct($name, $age) {      $this->name = $name;      $this->age = $age;    }    function __clone() {      $this->name = 'candy';    }        function show() {      echo $this->name . ' ' . $this->age . '<br/>';    }  }  $myChild = new Child('hanzichi', 10);  $hisChild = clone $myChild;  $hisChild->show();  // candy 10?>
    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 章丘市| 正镶白旗| 保德县| 成武县| 建平县| 怀化市| 清远市| 琼海市| 云南省| 吉林省| 水城县| 孝义市| 东丽区| 开原市| 澜沧| 昭觉县| 綦江县| 高密市| 滕州市| 石嘴山市| 定结县| 开阳县| 漠河县| 峡江县| 吉木萨尔县| 桑日县| 汕尾市| 合肥市| 甘谷县| 四平市| 株洲县| 安龙县| 龙山县| 化德县| 漾濞| 阳朔县| 登封市| 阳城县| 旬阳县| 香河县| 武夷山市|