您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP的一些高級面向對象編程的特性”,在日常操作中,相信很多人在PHP的一些高級面向對象編程的特性問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP的一些高級面向對象編程的特性”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一般來說,學習PHP需要了解下面的一些特性:
對象克隆。PHP5中對OOP模型的主要改進之一,是將所有對象都看作引用,而不是值。但是,如果所有對象都視為引用,那么如何創建對象的副本呢?答案是通過克隆對象。
<?php class Corporate_Drone{ private $employeeid; private $tiecolor; function setEmployeeID($employeeid) { $this->employeeid = $employeeid; } function getEmployeeID() { return $this->employeeid; } function setTiecolor($tiecolor) { $this->tiecolor = $tiecolor; } function getTiecolor() { return $this->tiecolor; } } $drone1 = new Corporate_Drone(); $drone1->setEmployeeID("12345"); $drone1->setTiecolor("red"); $drone2 = clone $drone1; $drone2->setEmployeeID("67890"); printf("drone1 employeeID:%d <br />",$drone1->getEmployeeID()); printf("drone1 tie color:%s <br />",$drone1->getTiecolor()); printf("drone2 employeeID:%d <br />",$drone2->getEmployeeID()); printf("drone2 tie color:%s <br />",$drone2->getTiecolor()); ?>
繼承。如前面所述,通過繼承來構建類層次體系是OOP的關鍵概念。
class Employee { ... } class Executive extends Employee{ ... } class CEO extends Executive{ ... }
接口。接口是一些未實現的方法定義和常量的集合,相當于一種類藍本。接口只定義了類能做什么,而不涉及實現的細節。本章介紹PHP5對接口的支持,并提供了一些展示這個強大OOP特性的例子。
<?php interface IPillage { // CONST 1; function emptyBankAccount(); function burnDocuments(); } class Employee { } class Excutive extends Employee implements IPillage { private $totalStockOptions; function emptyBankAccount() { echo "Call CFO and ask to transfer funds to Swiss bank account"; } function burnDocuments() { echo "Torch the office suite."; } } class test { function testIP(IPillage $ib) { echo $ib->emptyBankAccount(); } } $excutive = new Excutive(); $test = new test(); echo $test->testIP($excutive); ?>
抽象類。抽象類實質上就是無法實例化的類。抽象類將由可實例化的類繼承,后者稱為具體類(concreate class)。抽象類可以完全實現、部分實現或者根本未實現。
abstract class Class_name { //insert attribute definitions here //insert method definitions here }
命名空間。命名空間可根據上下文劃分各種庫和類,幫肋你更為有效地管理代碼庫。
<?php namespace Library; class Clean { function printClean() { echo "Clean..."; } } ?> <?php include "test.php"; $clean = new \Library\Clean(); $clean->printClean(); ?>
如果你使用過其他面向對象語言,可能會感到奇怪,為什么上述特性沒有包括其他語言中熟悉的一些OOP特性?原因很簡單,PHP不支持這些特性。為了讓你不再感到迷惑,下面列出PHP不支持的高級OOP特性。
方法重載。PHP不支持通過函數重載實現多態,根據Zend網站的討論,可能永遠都不會支持。要了解具體原因,可以查看http://www.zend.com/php/ask_experts.php
操作符重載。目前不支持根據所修改數據的類型為操作符賦予新的含義。根據zend網站的討論,將來實現這個特性的可能性也不大。
多重繼承。PHP不支持多重繼承。但是支持實現多個接口。
到此,關于“PHP的一些高級面向對象編程的特性”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。