Re: [請益] 有沒有用物件導向寫的簡單討論區

看板PHP作者 (O⊥M)時間19年前 (2006/10/20 14:21), 編輯推噓6(605)
留言11則, 5人參與, 最新討論串4/5 (看更多)

10/20 14:15,
php的OO有哪裡不夠完整嗎?
10/20 14:15

10/20 14:18,
純粹好奇o.o
10/20 14:18
OO 有三個特性:封裝(Encapsulation)、多型(Polymorphism)、繼承(Inheritance)。 在 PHP5 之後,因引介了 private, public 和 protected 等 modifier, 所以語言維護封裝特性的能力增強了不少;PHP4 以前的版本,則得靠訓練 有素的工程師自己維持。 繼承方面,感覺跟 Java 實作的方式類似,可以繼承單一類別、以及多重繼承介面。 然而建構子的使用上,個人覺得比起 C++,還是有些缺點... 不過或許這是我的習慣 問題吧。 然後提到多型。PHP 在這方面弱到一種程度,無法用 overloading 的方式設計物件的 行為(如果我說錯了,希望有人能分享一下如何辦到:P)。這對物件的設計造成一些 障礙,得繞些圈子才能達到類似的效果(maybe 加入一堆 switch 或 if..then XD) x x x 記得以前 OO 的老師說過,受良好軟體工程訓練的人,即便是 C 也可以很用 OO 的 方式開發;而對 OO 沒概念的人,既使用 Java 或 C# 一類物件導向的語言,也可以 寫的一點都不像 OO。 其實語言未必要原生支援 OO 的機制才能以 OO 開發;但是如果有這些機制輔助,那 顯然能省下不少時間 coding 一堆判別式、或是處理 函式呼叫時的一狗票參數。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.199.121

10/20 14:53, , 1F
overloading不行沒錯 T_T
10/20 14:53, 1F

10/20 15:34, , 2F
熊熊想起來...overloading也沒有
10/20 15:34, 2F

10/20 15:43, , 3F
overridding有
10/20 15:43, 3F

10/20 15:44, , 4F
我說php5
10/20 15:44, 4F
我常把 overloading 和 overriding 這兩個字意搞錯.. 剛剛發現又搞錯了 XD class foo{ function getName($var_a) { echo "foo"; } // 下面是 overloading, 多載/重載 同一函式 // and .. php 沒法這樣搞..囧 //function getName($var_a, $var_b) { echo "foofoo"; } } class bar extends foo { // 這是 overriding, 子類別 覆載/覆寫 父類別的方法 function getName($var_c) { echo "bar"; } } 真是對不起.. 誤導了大家 m(_ _)m ※ 編輯: foxzgerald 來自: 140.119.199.121 (10/20 16:56)

10/20 16:56, , 5F
修正一下 ...:P
10/20 16:56, 5F

10/20 17:08, , 6F
我天了...
10/20 17:08, 6F

10/20 17:18, , 7F
其實跟override比起來, overloading並沒有那麼重要
10/20 17:18, 7F

10/20 17:18, , 8F
手動overloading可以自己if判斷一下就好了...
10/20 17:18, 8F

10/20 17:19, , 9F
(因為php變數型態的彈性, 所以可以自己做overloading)
10/20 17:19, 9F

10/20 17:28, , 10F
overloading是靜態行為,所謂OO多型主要是體現於"動態"上:)
10/20 17:28, 10F
※ 編輯: foxzgerald 來自: 140.119.199.121 (10/20 22:48)

10/20 22:51, , 11F
php 無法重載系統函數-.- 這就是最麻煩的地方
10/20 22:51, 11F
文章代碼(AID): #15E6hW5n (PHP)
文章代碼(AID): #15E6hW5n (PHP)