我的答案:不矛盾。
Zend Framework ?
前提是你选择什么样的框架?Zend Framework 有着严谨的工程思想,每个类库都有完整的单元测试代码。这点国内很少有项目能做到这点,在我开发的框架中也是局部用到了单元测试。它是足够强大的,但是要掌握它确需要大量的精力,这已经违背了PHP的初衷,快速简单的开发。如果要搞那么复杂还不如回去用C++ JAVA慢慢戳了。
另外根据网上用户反馈,它的类库包含都采用的是相对路径。因为它要模拟JAVA的package管理方式。比如:
import("time");
那么它会去 include "time.php";
这个时候PHP会去根据 include_path 中指定的路径列表,扫描目录,从而产生大量的磁盘IO,导致性能急剧下降。这个我没有去求证,不知道是使用不当,还是ZF本身的机制有问题。总之因为它的庞大,让我感觉人生很短暂,从而内心深处无比的畏惧,如果哪天有人要逼着我去弄它,我也许不是被累死的,而是被吓死的。
还有PHP的命名空间语法我很不喜欢,ZEND STUDIO5.5直接标红。
Kohana ?
再来看看国外最近流行的Kohana,看起来它受到了jquery 链式操作的启发,比较经典的DB操作:
$query = DB::select()->from('users')->where('logins', '>', 50);
看起来非常优美,但是问题来了,它的内部实现非常的复杂,为此它要申明N多种类和方法来支持这些“语法”,这给调试带来相当大的困难,有困难找警察叔叔将不会再管用!
我认为KOHANA是一个味道良好的语法糖,多吃会上瘾,就像JQUERY,但是毕竟服务端不是前端,服务端对性能的要求是非常苛刻的,当然如果您只是想做个小型的项目或者兴趣爱好玩一玩倒不错。其它框架莫不类似如此,大多看起来大同小异,在PHP语法范围内制作各种口味的,只是KOHANA是目前看起来比较美味。
我很喜欢JQUERY,但是为什么我喜欢KOHANA不起来呢?
根本原因:性能!
它给你提供了一个良好的读写DB的语法,但是它没有告诉你,或者说约束你,你那么写是很容易产生性能问题的!where 里面的条件有几个,顺序是什么,orderby 怎么 by , 这些都非常有讲究的。
而如何写则是不太重要的,代码风格对自己口味就行。
比如以下是各种开源产品中DB类的使用语法:
$db->query("SELECT * FROM user WHERE groupid='123' ORDER BY uid DESC LIMIT 1, 10");
DB::select()->from('users')->where('logins', '>', 50);
db()->query("SELECT * FROM xxx WHERE xxx");
其实他们的底层都是调用的 mysql_query("SELECT * FROM xxx"); 上层只是换了个写法,一个符合自己框架规范的写法,本质上没有什么变化。
对于一个没有内功修为的人,给它倚天剑,也只能当菜刀使。
以上内容为转发,
本人还是喜欢轻量一点的,比如Ci------CodeIgniter
阅读全文
收起全文