恩 ... 发起一个投票好了 ...
今天有幸和几个 php 大牛凶猛的吵了一架 ...
起因是 ... 是否要 MVC ... 然后就开始分派系海阔天空脸红脖子粗的吵起来 ... 越吵越离谱儿 ...
我理解的真正意义上的 php MVC 是这样的 ...
一个 php 的守护进程 ... 一个 html 界面 ... 通过这个 html 界面控制这个守护进程去做些什么 ...
这种情况下 M 是那个守护进程 ... V 是控制台的 html 界面 ... C 是收到控制台命令的通过 WebServer 执行的 php 文件 ...
然后 C 通过不管 memcached 也好 HEAP 表也好文件锁也好 ... 达到改变 M 动作的目的 ... 这样的设计模式叫做 MVC ...
至于应用在网站上面的 MVC ... 我理解的就是下面那个样子 ...
文件架构
QUOTE:
│ index.php # 程序总入口 C
├─caches # 缓存
│ 2d5750fe00564064f62b53d4f382455a.cache.php
│ 91ec2c84798b3723ef272416676a5f08.cache.php
│
├─modules # 全部的功能模块 M
│ login.module.php
│ mainpage.module.php
│ something.module.php
│
├─objects # 在底层和模块层之间的对象
│ database.object.php
│ request.object.php
│ template.object.php
│
├─sources # 在模块中可被复用的代码
│ getuser.source.php
│ something.source.php
│
└─templates # 静态模版文件 V
login.template.html
mainpage.template.html
类的继承架构
QUOTE:
WebSite # 大底层
Datas # 数据交换用类
Objects # 所有应用层的元素 M
DataBase # 数据库连接类
Requests # 用户输入内容处理类
Modules # 所有模块的心脏
SomeModule_1 # 功能模块
SomeFunction # 有统一特性的模块公用层
SomeMoudule_2 # 功能模块
SomeMoudule_3 # 功能模块
SomeInclude # 功能模块中划分出去特殊的部分
Templates # 模版处理类 V
Exception # php 内置类
SomeException_1
SomeException_2
System (static) # 全局类
在类之外的 index.php 是 C ... 这是我一直在用的六层结构 ...
没有任何固定写死的 require 内容 ... index 里面定义了 __autoload 方法 ...
根据不同的 extends 自动 require_once ... 遇到不同错误扔不同的 Exception ...
通过传递这样的参数 index.php?module=*&class=*&blabla=* ...
在 index 里面判断 module 是否存在且是 Modules 的子类 ... class 是否存在且能运行来实现功能 ...
我一直觉得这样写代码很美 ... 代码简洁明快架构分明 ... 看着就舒服 ...
另外如果要添加一个功能直接把新文件传到 /Moudules/ 下面就好 ... 别的什么都不用动就能实现 ...
结果今天吵将起来被人骂了一个满脸开花晕头转向 ...
对方的观点总结起来就是 ... 代码美观算个毛 ... 只有写程序的能看到 ...
用户体验才是真的 ... 大家都能感觉到快才说明你这个网站程序写得好 ...
另外说国外的资料不可看 ... 老外的网站什么访问量 ... 国内的网站什么访问量 ...
国内一个小网站的日 PV 就能超过国外一个中型网站的周 PV 甚至月 PV ...
速度和承压才是应该放在最先考虑的 ... 而不是代码写的美不美观 ...
还有就是提到 ... __autoload() 那种方法是非常非常非常慢的 ...
在别的地方千方百计的优化 ... 能不启动正则就不启动正则 ... strlen 都不用了用 isset ...
省下来那一点点时间全被 __autoload() 占走了还不够 ...
不说这个 ... 光显示一个 hello world 这么大点的事儿要用到五层的类 ... 累不累啊 ...
OO 是个好思想 ... 但是只是思想而已 ... 理论不错 ... 不适合实际应用 ...
结果弄得我哑口无言的 ... 人家是大牛 ... 说得也都在理 ...
大牛的意思就是 OO 写成我这样儿就是给自己找不痛快 ...
但是我固执的不想承认我之前的路都走错了 ...
于是发这么个投票帖子问问大家的看法 ...
到底是代码漂亮比较重要 ... 还是脚本执行效率比较重要 ...
迷茫中 ... 求各路神仙指点小女子一二 ... m(_ _)m