/*
+——+
| = 本文為Haohappy讀<
<
Core PHP Programming>>
| = 中Classes and Objects一章的筆記
| = 翻譯為主+個人心得
| = 為避免可能發生的不必要的麻煩請勿轉載
謝謝
| = 歡迎批評指正
希望和所有PHP愛好者共同進步!
+——+
*/
第一節——面向對象編程
面向對象編程被設計來為大型軟件項目提供解決方案
尤其是多人合作的項目
當源代碼增長到一萬行甚至更多的時候
每一個更動都可能導致不希望的副作用
這種情況發生於模塊間結成秘密聯盟的時候
就像第一次世界大戰前的歐洲
//haohappy注
喻指模塊間的關聯度過高
相互依賴性太強
更動一個模塊導致其它模塊也必須跟著更動
想像一下
如果有一個用來處理登錄的模塊允許一個信用卡處理模塊來分享它的數據庫連接
當然出發點是好的
節省了進行另一個數據庫連接的支出
然而有時
登錄處理模塊改變了其中一個變量的名字
就可能割斷了兩者間的協議
導致信用卡模塊的處理出錯
進而導致處理發票的模塊出錯
很快地
體系中所有無關的模塊都可能由此出錯
因此
我覺得有點戲劇性地
絕大多數程序員都對耦合和封裝心存感激
耦合是兩個模塊間依賴程度的量度
耦合越少越好
我們希望能夠從已有的項目中抽走一個模塊並在另一個新項目中使用
我們也希望在某個模塊內部大規模的更動而不用擔心對其他模塊的影響
封裝的原則可以提供這個解決方案
模塊被看待成相對獨立
並且模塊間的數據通信通過接口來進行
模塊不通過彼此的變量名來窺探另一個模塊
它們通過函數來禮貌地發送請求
封裝是你可以在任何編程語言中使用的一個原則
在PHP和許多面向過程的語言中
可以偷懶是很有誘惑的
沒有什麼可以阻止你通過模塊來構建一個假想的WEB
面向對象編程是使程序員不會違背封裝原則的一種方法
在面向對象編程中
模塊被組織成一個個對象
這些對象擁有方法和屬性
從抽象的角度來看
方法是一個對象的所做的動作
而屬性是對象的特性
從編程角度來看
方法就是函數而屬性是變量
在一個理想化的面向對象體系中
每個部份都是一個對象
體系由對象及對象間通過方法來形成的聯系構成
一個類定義了對象的屬性
如果你在烘烤一組甜餅對象
那麼類將會是甜餅機
類的屬性和方法是被調用的成員
人們可以通過說出數據成員或者方法成員來表達
每種語言提供了不同的途徑來訪問對象
PHP從C++中借用概念
提供一個數據類型用來在一個標識符下包含函數和變量
最初設計PHP的時候
甚至PHP
被開發出時
PHP並不打算提供開發超過
萬行代碼的大型項目的能力
隨著PHP和Zend引擎的發展
開發大型項目變得有可能
但無論你的項目規模多大
用類來書寫你的腳本將可以讓代碼實現重用
這是一個好主意
特別當你願意與別人分享你的代碼的時候
有關對象的想法是計算機科學上最令人興奮的概念之一
開始很難掌握它
但我可以保證
一旦你掌握了它
用它的思維來思考將會非常自然
From:http://tw.wingwit.com/Article/program/PHP/201311/20801.html