使用OOP技術來最佳化PHP應用程式

來源:互聯網
上載者:User
程式|最佳化 大多數開發人員認為面相對象的程式設計(OOP)思想和PHP是一對矛盾,但實際上,PHP封裝了開發人員在其應用程式中使用OOP技術的所有功能。為了證明這一點,讓我們舉一個經典的Vehicle(車輛)例子,其PHP類如下:
class Vehicle {
// Stuff goes here!
}

在我們建立的Vehicle類中,用方法(即PHP函數)來聯絡我們的應用程式和Vehicle類的特性(characteristics)。每一個方法都是用來嚮應用程式描述Vehicle,這樣我們用方法來實現某些功能。請考慮下面的例子(它顯然是非函數的,即沒有給出函數體):
class Vehicle {
function getWheels() {
// 邏輯上用來查詢這裡的車輪(即wheel)數
return($wheels);
}
function getDoors() {
// 邏輯上用來查詢這裡的車門(即door)數。
return($wheels);
}
}

這裡,我們看到了兩個“getter”函數。如果這看起來、聽起來很熟悉的話,那是因為PHP的OOP與C或者Java非常相似的緣故。真正的挑戰是靈活的使用OOP、充分而又有效使用封裝。

為了確定在把Vehicle整合到你的應用程式這一過程中你需要懂得哪些內容,定義組成Vehicle的基本元素或許會有所協助。例如,Vehicles可以按照車門的數目或者車輪的數目來組織。

如果我們想知道我們的Vehicle有多少個輪子,我們需要返回這一資訊的函數。在PHP中,這一函數的實現可以如代碼清單A所示。

現在我們的Vehicle類包含了一個叫著getWheels的方法了,當應用程式傳遞給它一個車輛類型時,它返回輪子的數目。那麼,我們如何把車輛類型這一資訊傳遞給Vehicle類呢?為了更好的理解這一問題,讓我們示範一下用法,實現我們的類並調用它的getWheels方法來得到car類型車輛的車輪數目。
// 設定車輛種類
$vehicle = "car";

這樣我們已經宣布了我們想建立的車輛類型為car。由於我們使用PHP,因此這個值可以是動態,但如果這樣的話很快就會難以用代碼來處理(hard-code)它了。

為了使用這個類,我們首先需要在應用程式中建立該類的一個執行個體:
// 建立car類的一個新執行個體
$myVehicle = &new Vehicle;

我們剛剛建立了一個叫著myVehicle的Vehicle類的執行個體。它是Vehicle類的唯一執行個體,而且它包含了Vehicle所包含的所有資料(方法和屬性)。

現在是找出我們的car到底有多少個輪子的時候了:
// 通過向getWheels方法傳遞車輛類型來擷取車輪數目
$numWheels = $myVehicle->getWheels($vehicle);

正如你所見,我們調用了getWheel方法並向它傳遞了車輛種類。如果一切順利的話,我們就得到了我們所需的資料:
// 列印車輪數目
print "$vehicle has $numWheels wheels.";

如果我們想得到車門數目,我們需要編寫另一個檢查車門數的方法,如代碼清單B所示。


易於編程、易於管理

正如你在這個簡單的示範中所看到的那樣,在PHP中實現面相對象的編程並不困難。像我們在Vehicle類中那樣採用OOP和類,建立一個購物車(shopping cart)並不會非常麻煩。由於採用了物件導向的編程思想,代碼易讀、易維護、易升級。

清單C給出了我們在這裡所討論汽車分類應用程式的更高版本的代碼。它充分示範了PHP的面相對象效能。




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。