成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:222日期:2022-09-11 08:03:24

本文實例講述了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方法,使速度累加50class 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 ’==’; //trueif ($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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产精品12区| 99在线精品视频在线观看| 欧美性事免费在线观看| 欧美精品久久99久久在免费线| 亚洲成人在线免费| 99国产成+人+综合+亚洲欧美| 国产色一区二区| 高清不卡在线观看av| 欧美日韩在线一区二区| 午夜精品一区二区三区电影天堂| 国产欧美一级| 亚洲精品免费在线播放| 亚洲激情二区| 亚洲免费视频成人| 99伊人成综合| 一区二区三区日本| 99精品视频免费| 亚洲精品久久久久久国产精华液| 国产精品v一区二区三区 | 26uuu精品一区二区三区四区在线| 国产在线精品一区在线观看麻豆| 欧美三区在线视频| 久久成人免费日本黄色| 在线精品视频免费观看| 久久99精品网久久| 在线播放/欧美激情| 福利电影一区二区三区| 精品国产制服丝袜高跟| 91亚洲国产成人精品一区二三| 久久久夜色精品亚洲| 91色|porny| 中文字幕欧美区| 国产精品va| 亚洲男人电影天堂| 亚洲一区二区成人| 青青草一区二区三区| 欧美色图在线观看| 国产一区二区三区蝌蚪| 精品三级在线看| 91免费观看国产| 国产精品久久久久久久久免费相片| 影音先锋在线一区| 一二三区精品视频| 色欧美日韩亚洲| 国产麻豆午夜三级精品| 亚洲精品一区二区三区在线观看 | 色综合视频一区二区三区高清| 久久久久久久精| 欧美久久九九| 中文字幕欧美一| 亚洲综合精品| 久久99国产精品免费网站| 91精品国产麻豆国产自产在线| 成人午夜免费av| 国产精品免费视频网站| 一区二区三区福利| 久久99热国产| 欧美精品一区二区精品网| 欧美视频二区| 午夜不卡av免费| 欧美一级免费大片| 欧美久久在线| 视频一区二区中文字幕| 日韩欧美一级精品久久| 国产一区日韩一区| 午夜精品一区二区三区三上悠亚 | 亚洲天堂成人在线观看| 亚洲一区二区三区精品在线观看| 老司机一区二区| 精品国产免费一区二区三区四区| 91久久精品国产91久久性色tv| 午夜精品久久久久久久久久久| 在线电影院国产精品| 欧美国产一区二区三区激情无套| 亚洲一区二区欧美日韩| 91精品综合久久久久久| 欧美成人一区二免费视频软件| 亚洲午夜一二三区视频| 日韩欧美国产1| 一本色道久久综合亚洲二区三区| 久久国产精品99久久人人澡| 精品91自产拍在线观看一区| 国产视频一区三区| 国产精品综合一区二区| 亚洲色图第一区| 欧美精品1区2区3区| 欧美性色综合| 久久99精品久久久久婷婷| 国产三级欧美三级| 久久综合导航| 91麻豆免费在线观看| 亚洲123区在线观看| 日韩亚洲欧美在线观看| 亚洲看片网站| 国产麻豆精品在线| 亚洲女人****多毛耸耸8| 欧美日韩国产免费一区二区| 红桃视频欧美| 精品一区二区三区在线播放| 国产精品久久久爽爽爽麻豆色哟哟| 色www精品视频在线观看| 91日韩一区二区三区| 日本午夜一区二区| 欧美韩日一区二区三区四区| 欧美吻胸吃奶大尺度电影| 国产一区二区三区自拍| 国产曰批免费观看久久久| 最近日韩中文字幕| 91精品国产综合久久精品app| 亚洲欧洲久久| 成人免费看视频| 午夜久久久久久久久| 久久久久久久久久看片| 欧美视频一区在线| 亚洲大片av| 国产精品一线二线三线精华| 亚洲女同ⅹxx女同tv| 欧美成人精品3d动漫h| 久久xxxx精品视频| 欧美日韩妖精视频| 国产综合一区二区| 亚洲一卡二卡三卡四卡无卡久久| 精品国产一区二区三区久久影院| 久久综合狠狠| 极品日韩av| 成人18精品视频| 美女被吸乳得到大胸91| 自拍偷自拍亚洲精品播放| 精品捆绑美女sm三区| 欧美专区在线观看一区| 国外精品视频| 国产成人免费视频一区| 五月天激情综合网| 国产精品成人一区二区艾草| 欧美一级专区免费大片| 日本韩国欧美三级| 国产精品久久波多野结衣| 欧美激情性爽国产精品17p| 国产乱码精品一区二区三区忘忧草 | 一区二区三区免费看视频| 久久久噜噜噜久久人人看 | 麻豆91精品视频| 亚洲综合无码一区二区| 国产精品国产馆在线真实露脸| 欧美成人在线直播| 777精品伊人久久久久大香线蕉| 色婷婷综合五月| 在线视频精品| 欧美在线3区| 成人国产在线观看| 国产成人综合亚洲91猫咪| 蜜臂av日日欢夜夜爽一区| 无码av免费一区二区三区试看| 亚洲欧美成aⅴ人在线观看| 国产精品久久久久天堂| 国产午夜精品一区二区三区嫩草| 5566中文字幕一区二区电影| 欧美日精品一区视频| 狼狼综合久久久久综合网| 国产精品亚洲综合色区韩国| 一区免费视频| 欧美日韩国产高清| 欧美精品97| 91丨国产丨九色丨pron| 成人动漫一区二区在线| 国产精品综合久久| 久久成人免费电影| 免费在线看成人av| 日本sm残虐另类| 麻豆中文一区二区| 免费av成人在线| 日韩极品在线观看| 五月婷婷另类国产| 天天综合网 天天综合色| 五月激情综合婷婷| 婷婷中文字幕综合| 爽好多水快深点欧美视频| 视频一区欧美精品| 婷婷一区二区三区| 日韩高清在线观看| 美女视频一区二区三区| 久久99久久99小草精品免视看| 免费在线欧美视频| 久久国产精品99久久久久久老狼| 日本不卡高清视频| 精品中文av资源站在线观看| 精品一区二区三区免费观看| 国产自产2019最新不卡| 懂色av中文一区二区三区| 91在线云播放| 国产一区再线| 99www免费人成精品| 美女主播一区| 欧美在线影院一区二区| 欧美人体做爰大胆视频| 91精品国产麻豆| 亚洲精品一区二区三区四区高清| 欧美精品一区二区三区蜜桃视频| 日本一区二区动态图| 亚洲色图都市小说|