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

首頁 > 網(wǎng)站 > 建站經(jīng)驗 > 正文

PHP中的常見魔術(shù)方法功能作用及用-法實例

2019-11-02 15:19:22
字體:
供稿:網(wǎng)友

   

七個字網(wǎng)名[www.la240.com/html2017/1/24/]
這篇文章主要介紹了PHP中的常見魔術(shù)方法功能作用及用法實例,本文講解了構(gòu)造函數(shù)和析構(gòu)函數(shù)__construct()和__desctruct()以及屬性重載(Property Overloading)__get()和、__set()、__isset()等等魔術(shù)方法,需要的朋友可以參考下

  概述

  在面向?qū)ο缶幊讨校琍HP提供了一系列的魔術(shù)方法,這些魔術(shù)方法為編程提供了很多便利。PHP中的魔術(shù)方法通常以__(兩個下劃線)開始,并且不需要顯示的調(diào)用而是由某種特定的條件出發(fā)。這篇文章簡單總結(jié)了PHP中提供的魔術(shù)方法。

  開始之前

  在總結(jié)PHP的魔術(shù)方法之前先來定義兩個類,以便后邊示例使用:

   代碼如下:

  

  class Device {

  public $name;

  public $battery;

  public $data = array();

  public $connection;

  protected function connect() {

  $this->connection = 'resource';

  echo $this->name . ' connected' . PHP_EOL;

  }

  protected function disconnect() {

  $this->connection = null;

  echo $this->name . ' disconnected' . PHP_EOL;

  }

  }

  class Battery {

  private $charge = 0;

  public function setCharge($charge) {

  $charge = (int)$charge;

  if($charge < 0) {

  $charge = 0;

  }

  elseif($charge > 100) {

  $charge = 100;

  }

  $this->charge = $charge;

  }

  }

  ?>

  Device類有四個成員屬性和兩個成員方法。Battery類有一個成員屬性和一個成員方法。

  構(gòu)造函數(shù)和析構(gòu)函數(shù)

  構(gòu)造函數(shù)和析構(gòu)函數(shù)分別在對象創(chuàng)建和銷毀時被調(diào)用。對象被“銷毀”是指不存在任何對該對象的引用,比如引用該對象的變量被刪除(unset)、重新賦值或腳本執(zhí)行結(jié)束,都會調(diào)用析構(gòu)函數(shù)。

  __construct()

  __construct()構(gòu)造函數(shù)是目前為止最經(jīng)常使用的函數(shù)。在創(chuàng)建對象時,可以在構(gòu)造函數(shù)中做一些初始化工作。可以為構(gòu)造函數(shù)定義任意多個參數(shù),只要在實例化時傳入對應個數(shù)的參數(shù)即可。構(gòu)造函數(shù)中出現(xiàn)的任何異常都會阻止對象的創(chuàng)建。

  代碼如下:

  class Device {

  public function __construct(Battery $battery, $name) {

  $this->battery = $battery;

  $this->name = $name;

  $this->connect();

  }

  }

  上面的示例代碼中,Device類的構(gòu)造函數(shù)為成員屬性賦值并且調(diào)用了connect()方法。

  代碼如下:

  將構(gòu)造函數(shù)聲明為私有方法,可以防止在類外部創(chuàng)建對象,這在單利模式中經(jīng)常使用。

  __desctruct()

  析構(gòu)函數(shù)通常在對象被銷毀時調(diào)用,析構(gòu)函數(shù)不接收任何參數(shù)。經(jīng)常在析構(gòu)函數(shù)中執(zhí)行一些清理工作,比如關(guān)閉數(shù)據(jù)庫連接等。

  屬性重載(Property Overloading)

  有一點需要注意的是:PHP中的”重載”與其他大多數(shù)語言的重載不是太一樣,雖然都實現(xiàn)了相同的功能。

  屬性重載涉及到的兩個魔術(shù)方法主要是用來處理屬性訪問,定義了當我們嘗試訪問一個不存在(或不可訪問)的屬性時會發(fā)生什么。

  __get()

  魔術(shù)方法__get()在我們嘗試訪問一個不存在的屬性時會被調(diào)用。它接收一個參數(shù),該參數(shù)表示訪問屬性的名字,并且將該屬性的值返回。在上面的Device類里,有一個data屬性,該屬性就在這里就起了作用,如下面得代碼:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 松滋市| 临夏市| 赣州市| 罗甸县| 沛县| 澄迈县| 囊谦县| 定南县| 政和县| 东山县| 云和县| 陵川县| 九寨沟县| 赫章县| 孝昌县| 昌图县| 平安县| 凭祥市| 阿城市| 安顺市| 锡林浩特市| 嵊州市| 石泉县| 娱乐| 天台县| 霞浦县| 兴国县| 崇明县| 洞头县| 渑池县| 蕲春县| 木兰县| 平安县| 南溪县| 荔浦县| 蓝山县| 阿拉善右旗| 张北县| 霍城县| 定边县| 台东县|