校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PHP中類與對象功能、用法實例解讀

PHP中類與對象功能、用法實例解讀

熱門標簽:邢臺400電話辦理 南寧電話外呼系統線路 濟源百應電銷機器人聯系方式 辦理400電話哪家好點 重慶外呼電銷系統多少錢 嘟嘟云外呼系統 咸陽電銷 南京3D地圖標注 正規電銷機器人系統

本文實例講述了PHP中類與對象功能、用法。分享給大家供大家參考,具體如下:

1. 類與對象

類是面向對象程序設計的基本概念,是一類東西的結構描述 , 是一種抽象的概念 . 對象是一類東西的一個具體的實例 , 是具體事物 .

對象通過new關鍵字進行實例化:
比如汽車可以抽象為一個類,汽車擁有名字、輪胎、速度、重量等屬性,可以有換擋、前進、后退等操作方法。

// 定義一個汽車類
class Car {
  $name = '汽車';
  function getName() {
    return $this->name;
  }
}
//對象通過new關鍵字進行實例化 
$car = new Car();
echo $car->getName();
2. 屬性與對象

在類中定義的變量稱之為屬性。屬性聲明是由關鍵字 public,protected 或者 private 開頭,后面跟一個普通的變量聲明來組成。屬性的變量可以設置初始化的默認值,默認值必須是常量。

方法就是在類中的function,很多時候我們分不清方法與函數有什么差別,在面向過程的程序設計中function叫做函數,在面向對象中function則被稱之為方法。

訪問控制的關鍵字代表的意義為:

  • public:公開的 , 任何地方都可以訪問
  • protected:受保護的 , 類內自身 , 其子類和父類可以訪問
  • private:私有的 , 類內自身可訪問

類屬性的訪問控制必須定義 , 即必須寫出關鍵字 , 定義為三個中的一個
類方法不寫關鍵字 , 則默認為公有的

class Car {
  public $speed = 0;
  //增加speedUp方法,使speed加10
  public function speedUp(){
    $this->speed += 10;
  }
}
// 創建對象
$car = new Car();
// 通過對象獲取類屬性與類方法
$car->speedUp();
echo $car->speed;
3. 構造函數與析構函數

PHP5可以在類中使用__construct()定義一個構造函數,具有構造函數的類,會在每次對象創建的時候調用該函數,因此常用來在對象創建的時候進行一些初始化工作。

在子類中如果定義了__construct則不會調用父類的__construct,如果需要同時調用父類的構造函數,需要使用parent::__construct()顯式的調用。

同樣,PHP5支持析構函數,使用__destruct()進行定義,析構函數指的是當某個對象的所有引用被刪除,或者對象被顯式的銷毀時會執行的函數。

class Car {
  function __construct() {
    print "構造函數被調用 \n";
  }
  function __destruct() {
    print "析構函數被調用 \n";
  }
}
$car = new Car(); //實例化時會調用構造函數
echo '使用后,準備銷毀car對象 \n';
unset($car); //銷毀時會調用析構函數

當PHP代碼執行完畢以后,會自動回收與銷毀對象,因此一般情況下不需要顯式的去銷毀對象。

4. 靜態屬性與靜態方法
  • 靜態屬性:
public / protected / private static $變量名

不用實例化類 , 直接調用 類名 :: $變量名
但實例化后 , 不允許使用 對象 -> $變量名

  • 靜態方法
public / protected / private static function 方法名()

不用實例化類 , 直接調用 類名 :: 方法名()
實例化后 , 對象 -> 方法名()
靜態方法中,$this偽變量不允許使用。可以使用self,parent,static在內部調用靜態方法與屬性。

class Car {
  private static $speed = 10;
  
  public static function getSpeed() {
    return self::$speed;
  }
  
  public static function speedUp() {
    return self::$speed+=10;
  }
}
class BigCar extends Car {
  public static function start() {
    parent::speedUp();
  }
}

BigCar::start();
echo BigCar::getSpeed();

如果構造函數定義成了私有方法,則不允許直接實例化對象了,這時候一般通過靜態方法進行實例化,在設計模式中會經常使用這樣的方法來控制對象的創建,比如單例模式只允許有一個全局唯一的對象。

class Car {
  private function __construct() {
    echo 'object create';
  }

  private static $_object = null;
  public static function getInstance() {
    if (empty(self::$_object)) {
      self::$_object = new Car(); //內部方法可以調用私有方法,因此這里可以創建對象
    }
    return self::$_object;
  }
}
$car = new Car(); //這里不允許直接實例化對象
$car = Car::getInstance(); //通過靜態方法來獲得一個實例
5. 繼承

繼承是面向對象程序設計中常用的一個特性,汽車是一個比較大的類,我們也可以稱之為基類,除此之外,汽車還分為卡車、轎車、東風、寶馬等,因為這些子類具有很多相同的屬性和方法,可以采用繼承汽車類來共享這些屬性與方法,實現代碼的復用。

class Car {
  public $speed = 0; //汽車的起始速度是0
  
  public function speedUp() {
    $this->speed += 10;
    return $this->speed;
  }
}
//建立一個Truck類,擴展Car類,并覆蓋speedUp方法,使速度累加50
class Truck extends Car{
  public function speedUp(){
    parent::speedUp();
    $this->speed += 50;
    return $this->speed;
  }
}

$car = new Truck();
$car->speedUp();
echo $car->speed;
5. 重載

PHP中的重載指的是動態的創建屬性與方法,是通過魔術方法來實現的。

  • 屬性的重載通過__set,__get,__isset,__unset來分別實現對不存在屬性的賦值、讀取、判斷屬性是否設置、銷毀屬性。
class Car {
  private $ary = array();
  
  public function __set($key, $val) {
    $this->ary[$key] = $val;
  }
  
  public function __get($key) {
    if (isset($this->ary[$key])) {
      return $this->ary[$key];
    }
    return null;
  }
  
  public function __isset($key) {
    if (isset($this->ary[$key])) {
      return true;
    }
    return false;
  }
  
  public function __unset($key) {
    unset($this->ary[$key]);
  }
}
$car = new Car();
$car->name = '汽車'; //name屬性動態創建并賦值
echo $car->name;
if ($car->age){
  echo '有';
}else{
  echo '無';
}
unset($car->name);
var_dump($car->name);
  • 方法的重載通過__call來實現,當調用不存在的方法的時候,將會轉為參數調用__call方法,當調用不存在的靜態方法時會使用__callStatic重載。
class Car {
  public $speed = 0;
  
  public function __call($name, $args) {
    if ($name == 'speedUp') {
      $this->speed += 10;
    }
  }
}
$car = new Car();
$car->speedUp(); //調用不存在的方法會使用重載
echo $car->speed;
6. 高級特性

對象比較,當同一個類的兩個實例的所有屬性都相等時,可以使用比較運算符 == 進行判斷,當需要判斷兩個變量是否為同一個對象的引用時,可以使用全等運算符 === 進行判斷。

class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '==';  //true
if ($a === $b) echo '==='; //false

對象復制,在一些特殊情況下,可以通過關鍵字clone來復制一個對象,這時__clone方法會被調用,通過這個魔術方法來設置屬性的值。

class Car {
  public $name = 'car';
  
  public function __clone() {
    $obj = new Car();
    $obj->name = $this->name;
  }
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);

對象序列化,可以通過serialize方法將對象序列化為字符串,用于存儲或者傳遞數據,然后在需要的時候通過unserialize將字符串反序列化成對象進行使用。

class Car {
  public $name = 'car';
}
$a = new Car();
$str = serialize($a); //對象序列化成字符串
echo $str.'br>';
$b = unserialize($str); //反序列化為對象
var_dump($b);

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP類與對象后期靜態綁定操作實例詳解
  • 詳解php中的類與對象(繼承)
  • PHP類與對象中的private訪問控制的疑問
  • php基礎知識:類與對象(5) static
  • php基礎知識:類與對象(4) 范圍解析操作符(::)
  • php基礎知識:類與對象(3) 構造函數和析構函數
  • php基礎知識:類與對象(2) 自動加載對象
  • php基礎知識:類與對象(1)
  • PHP學習記錄之面向對象(Object-oriented programming,OOP)基礎【接口、抽象類、靜態方法等】
  • PHP學習記錄之面向對象(Object-oriented programming,OOP)基礎【類、對象、繼承等】
  • PHP面向對象程序設計子類擴展父類(子類重新載入父類)操作詳解

標簽:通遼 南通 黃山 河南 唐山 武漢 平頂山 隴南

巨人網絡通訊聲明:本文標題《PHP中類與對象功能、用法實例解讀》,本文關鍵詞  PHP,中類,與,對象,功能,用法,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中類與對象功能、用法實例解讀》相關的同類信息!
  • 本頁收集關于PHP中類與對象功能、用法實例解讀的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美日韩国产一区| 久久精品一区二区三区不卡 | 白白色 亚洲乱淫| 亚洲国产一区在线观看| 国产日韩欧美综合在线| 欧美精品视频www在线观看| 国产91在线看| 久久99深爱久久99精品| 亚洲电影一区二区三区| 中文字幕第一区二区| 欧美一级二级在线观看| 在线中文字幕不卡| av一二三不卡影片| 国产又粗又猛又爽又黄91精品| 亚洲福利视频一区| 国产精品国产三级国产aⅴ入口 | 欧美精品日韩一区| 99r精品视频| 国产精品亚洲综合一区在线观看| 日韩av一区二区在线影视| 一区二区三区欧美日| 欧美高清在线精品一区| 精品国产99国产精品| 欧美一区二区在线看| 欧美高清视频一二三区| 欧美日韩一区二区在线视频| 91亚洲资源网| 粉嫩av亚洲一区二区图片| 国产精品综合av一区二区国产馆| 秋霞av亚洲一区二区三| 石原莉奈在线亚洲二区| 午夜视频在线观看一区二区三区| 一区二区三区成人| 亚洲精品ww久久久久久p站| 中文字幕中文在线不卡住| 国产日韩欧美在线一区| 国产欧美日韩在线观看| 中文字幕av一区二区三区免费看 | 久久女同性恋中文字幕| 精品欧美一区二区久久 | 日韩一二三区不卡| 欧美一卡在线观看| 日韩女优电影在线观看| www激情久久| 中文字幕久久午夜不卡| 国产精品青草久久| 国产欧美一区二区精品性色 | 精品国精品自拍自在线| 日韩视频一区二区三区| 久久色中文字幕| 中文字幕国产精品一区二区| 国产精品久久久久影院色老大| 日本一区二区不卡视频| 亚洲三级电影网站| 亚洲成a人片综合在线| 丝袜亚洲另类欧美| 麻豆精品在线看| 国产不卡高清在线观看视频| 成人高清av在线| 欧美怡红院视频| 欧美成人免费网站| 日本一区二区视频在线观看| 亚洲精品一二三| 日日噜噜夜夜狠狠视频欧美人| 日韩综合一区二区| 国内一区二区在线| 91网站在线观看视频| 欧美三级中文字幕在线观看| 日韩欧美资源站| 精品福利一区二区三区| 国产精品电影一区二区| 午夜天堂影视香蕉久久| 国产一区在线不卡| 一本久道久久综合中文字幕| 欧美一区二区黄| 欧美国产乱子伦| 午夜在线电影亚洲一区| 国产在线播精品第三| 在线观看日韩毛片| 日韩欧美精品在线| 综合欧美一区二区三区| 日韩国产精品91| 成人毛片视频在线观看| 91精品国产欧美一区二区成人| 久久精品亚洲一区二区三区浴池| 亚洲女与黑人做爰| 国内精品伊人久久久久影院对白| eeuss鲁片一区二区三区在线观看| 欧美色图片你懂的| 久久久国际精品| 午夜伦欧美伦电影理论片| 懂色中文一区二区在线播放| 在线成人小视频| 国产精品乱码妇女bbbb| 蜜桃av一区二区三区| 色综合色综合色综合色综合色综合| 欧美日韩一区在线观看| 中文字幕巨乱亚洲| 日本免费新一区视频| 99精品久久免费看蜜臀剧情介绍| 日韩精品专区在线影院观看| 亚洲综合在线观看视频| 国产电影一区在线| 884aa四虎影成人精品一区| 亚洲色大成网站www久久九九| 久草这里只有精品视频| 色综合久久中文综合久久97| 久久精品欧美一区二区三区麻豆| 日韩电影在线一区二区| 色欧美日韩亚洲| 中文字幕一区不卡| 黄色资源网久久资源365| 日韩午夜精品视频| 亚洲午夜成aⅴ人片| 色综合天天综合| 国产精品免费丝袜| 韩国精品一区二区| 91精品国产91久久久久久一区二区 | 粉嫩av一区二区三区粉嫩| 日韩视频一区二区三区在线播放| 亚洲成a人片在线观看中文| 成人一级视频在线观看| 欧美精品一区二区在线观看| 久久国产欧美日韩精品| 欧美高清你懂得| 性久久久久久久久| 欧美高清www午色夜在线视频| 亚洲午夜成aⅴ人片| 色婷婷综合久久久| 一区二区三区在线免费观看 | 欧美日韩国产乱码电影| 亚洲一区二区视频在线| 欧美三区在线视频| 亚洲成人激情自拍| 91精选在线观看| 日韩不卡免费视频| 日韩一区二区三区观看| 日本欧美一区二区| 日韩精品影音先锋| 国产一区二区成人久久免费影院| 2021国产精品久久精品| 激情综合一区二区三区| 精品欧美一区二区久久| 国产精品亚洲人在线观看| 日本一区二区免费在线观看视频| 国产成人综合视频| 国产精品久久一级| 99re亚洲国产精品| 亚洲自拍另类综合| 欧美精品在欧美一区二区少妇| 日韩精品乱码av一区二区| 6080午夜不卡| 国产综合成人久久大片91| 精品国产99国产精品| 成人高清av在线| 一区二区三区在线播| 9191国产精品| 经典三级一区二区| 欧美激情艳妇裸体舞| 欧洲一区二区三区免费视频| 丝袜美腿一区二区三区| 精品欧美一区二区三区精品久久| 粉嫩嫩av羞羞动漫久久久| 一区二区三区精品在线| 日韩一区二区电影在线| 国产一区91精品张津瑜| 自拍偷自拍亚洲精品播放| 欧美人伦禁忌dvd放荡欲情| 麻豆精品视频在线观看视频| 九色|91porny| 日本精品视频一区二区| 婷婷亚洲久悠悠色悠在线播放| 日韩三级视频中文字幕| www.亚洲激情.com| 亚洲不卡在线观看| 精品国产91亚洲一区二区三区婷婷| 成人动漫av在线| 日韩电影免费一区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日韩欧美中文字幕一区| 99久久99久久久精品齐齐| 天天免费综合色| 国产女主播在线一区二区| 欧美亚洲自拍偷拍| 成人精品国产一区二区4080| 亚洲国产精品自拍| 中文字幕久久午夜不卡| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲另类色综合网站| 欧美成人一区二区三区| 在线中文字幕一区| 国产精华液一区二区三区| 亚洲一卡二卡三卡四卡五卡| 国产欧美日韩在线视频| 3atv一区二区三区| www.久久久久久久久| 精品午夜久久福利影院| 五月婷婷激情综合| 亚洲欧美另类图片小说| 久久久不卡网国产精品一区|