作者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
1F:推 MagicMomo19:纯推好文 ! 09/05 23:55
2F:推 cruisel:小弟目前也正在学习物件导向,推版大观念! 09/06 14:35
3F:推 kaiyuegg:推好文~! 09/28 10:36