作者gpmm (銀色)
看板PHP
標題Re: [請益] class和function
時間Wed Sep 5 17:00:42 2012
※ 引述《yororu (人生啊!)》之銘言:
: 我不曉得到底用mvc建構為什麼要寫的這麼複雜????
: --
: 我並不是要求別人寫完美的給我..
: 我只是在想..到網路去下載CRM改和乾脆自己寫那個比較好??
: 還有如果自己寫的話需要用到class嗎???還是說儘量少用效率會比較好呢??
我們到底需要 class 幹麼?
我們已經夠苦逼的碼農人生為什麼還要更多我看不懂的 framework 進來攪和,
老實說,我看過很多 phper 其實都有跟你相同的疑惑,非常多。
如果要一個最簡單的解釋,我會說,
物件導向(也就是你所謂的 class)的成因就和 function 沒有兩樣,
是一種為了能更「彈性」開發產生的程式思維。
誠如我今天要連線資料庫,如果不使用 function ,我只要一行
mysql_connect('host', 'user', 'password');
如果我要把他寫成 function,我需要三行
function dbconn () {
mysql_connect('host', 'user', 'password');
}
那麼如果有些人在整個程式裡,
從來都只需要用一次的 mysql_connect,那他一定會問,
為什麼一行可以解決的事,我需要為了 function 弄成三行,
還要放到另外一個單獨的檔案裡,再 include / require 進來,
這樣不是犯傻嗎?
但是你我都很清楚(而且不假思索),
function 是很基礎而且必要的一種寫法。
同樣的,物件導向,是一整個大格局程式設計的基礎,
很多 phper 在沒有接觸到大型程式架構前,很難理解物件導向到底有什麼意義。
但實際上物件導向真的就是個基礎,
透過物件特性所衍生出來的設計模式和解決方案(也就是應用),
才是它的精神所在。
當然物件導向本身就有一些特性,讓它像是一種「強大且內斂」的 function ,
從這個角度上來說,即使不使用設計模式也可以體會到物件導向的好。
另外我想你是不是誤解 MVC 了,
你所提的例子和 MVC 其實沒有直接關係,那就是個物件而已 :P
MVC 算是一種比較抽象的設計模式觀念,除了 MVC 還有 MVVM 以及後來的 MVP
http://zh.wikipedia.org/wiki/MVC
http://en.wikipedia.org/wiki/Model_View_ViewModel
http://zh.wikipedia.org/wiki/Model_View_Presenter
要說在小系統中 MVC 有什麼好…嗯,快速開發算嗎(被毆
我很可以理解,你會覺得原本簡單的東西用了這些框架之後反而變得複雜,
是這樣的,在一些 phper 寫 code 的架構裡,一隻 php 就是一個「頁面」,
但當網站架構複雜到某個程度後,很多頁面的處理上會開始變得複雜,
例如假設要弄「登入後才可見」和「不登入也可見」的畫面權限好了,
如果現在手上有 30 頁 php,那要怎麼做呢?一頁一頁加?
hmm...是個方法,可是如果一個月後,權限改變了,權限種類變多了呢?
對,可以把他用 function 提取出來做一個總控制,
但還有沒有其他也不錯的方式呢?
有的,打造 router 和 dispatcher,用更彈性的方法來處理和維護這一段
(細節我就不講了)
所以這些東西是從根本上就完全不一樣的思維,
在你真正需要它之前,你都很難體認到它帶來的好處。
另外關於效能抉擇的問題,嗯,這又是另一個很大的議題了…(遠目
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.180.105.248
推 MagicMomo19:純推好文 ! 09/05 23:55
推 cruisel:小弟目前也正在學習物件導向,推版大觀念! 09/06 14:35
推 kaiyuegg:推好文~! 09/28 10:36