话说围观PHP框架之后的感悟

ValueError 发布于 2010/11/08 10:45
阅读 6K+
收藏 5

不知今天发了什么神经,突然对PHP大发感悟。菜鸟,初学不久,胡乱说的,表示对以下言论不负责。但是灰常欢迎拍砖或除人身攻击和无意义嘲讽外的任何方式批评。

主要是研究了一段时间Zend Framework,又研究了一段时间Yii Framework,再看回原来用的ASP.NET,针对以MVC中模型层为核心的PHP“设计模式”感慨。也是个人想在特定的场景中为贴合实际,设计一套除TableGateway、ActiveRecord之外的思路吧。

-------------------------

1.PDO直接产生的关联数组本身就是极佳的数据容器,像.NET常用的做法一样copy封装到类的字段中去,是画蛇添足。

2.模型层不应该是一堆ActiveRecord的集合或一堆**Gateway的集合,底层数据模型和上层领域模型应该分开。

3.数据模型的类应该用于提供访问原始数据容器(即第一点中说的关联数组)的接口,应该用于访问器的形式封装这些数据而不是把这些数据复制一遍

4.和主体结构无关,但又常常引起复制-粘贴的重复工作的操作,应该封装成辅助类。

5.通过针对特定场景的辅助类产生SQL语句,比ActiveRecord的那种“通杀”模式更加轻巧,性能和可维护性也应该更好

6.上层领域模型也不应该和底层数据模型糅合在一起,基于这点,再次不认同ActiveRecord

7.接口优美的封装应该有内部优美的实现,否则还不如不封装。例如ASP.NET的WebForm模式封装的极其有没,但是内部实现灰常复杂,不能不说是轻巧性和灵活性的一大杀手。

8.PHP的弱类型不是劣势反而是优势,因为PHP也不适宜照办JAVA等的模式。对于PHP,简单摆在第一,这也符合PHP的设计哲学

-------------------------

以上纯属YY,未经实践。而且针对的是特定场景(我们校媒网),而非泛指。

不过还是欢迎拍砖~~~

加载中
2
冬日暖阳85
冬日暖阳85

使用主流框架可以降低公司的管理成本,而不是利于程序的执行效率。

我承认我是站在管理的角度考虑问题。

如果只是一个人的项目,可以不考虑任何框架,怎么快捷怎么来。

0
hmly
hmly

php程序员是经常把controller和model混在一块儿的,所以mvc开发经常是不彻底的mvc,习惯了就好!

0
ValueError
ValueError

引用来自#2楼“hmly”的帖子

php程序员是经常把controller和model混在一块儿的,所以mvc开发经常是不彻底的mvc,习惯了就好!

呵呵,我不大喜欢这样。不过我的这些想法都还只是YY,希望能利用最近的机会实践一下~

0
qycms_cn
qycms_cn

引用来自#2楼“hmly”的帖子

 

php程序员是经常把controller和model混在一块儿的,所以mvc开发经常是不彻底的mvc,习惯了就好!

 程序员的高低,不是读了多少书,用过多少工具,而是看了一些具体的产品后,有自己独特的看法,在自己遇到实际的问题时,有自己的科学的解决方法.

zend framework,yii framework是不错的工具,同样,我们程序员应借鉴它的代码组织方法,产品的过程.由于PHP的自身特点,在做web的数据逻辑时,controller和modelcontroller和model是一个正常的过程,它是"为了解决需要最简单方法",是非常正确的事情,如果截然以MVC的套路去,照搬模式,反而是条条主义.

在java中,以MVC思想去做,XML,DAO等来描述数据结构,把一个简单的数据处理过程,硬生生的拆分成几个部分,这样除了显示自己的"MVC"思想外,对运行效率,开发效率根本就是毒瘤.根本不是具体问题具体分析,而是毫无主见的体现。

我好欣赏java在做web是拆分的MVC, 如struct,spring,hibernate,做得非常优雅,但这仅仅是“理论”上的,实际使用上,却不太合适,这是因为它的MVC已超出实现的应用需要,这又是何必。(在做复杂的数据处理层时,SSH是不错的选择)

所以,在做web层时,不同的地方,有不同的应用方式,思想只是一个指导,不是成品的必然,程序员也要明白,世界上比自己利害的人有一大堆,不同人的实现方法不同,在实际的应用中,“条条大路通罗马”。

MVC是好东西,具体问题具体分析,更重要。

0
ValueError
ValueError

引用来自#4楼“杨金焕”的帖子

引用来自#2楼“hmly”的帖子

php程序员是经常把controller和model混在一块儿的,所以mvc开发经常是不彻底的mvc,习惯了就好!

 程序员的高低,不是读了多少书,用过多少工具,而是看了一些具体的产品后,有自己独特的看法,在自己遇到实际的问题时,有自己的科学的解决方法.

zend framework,yii framework是不错的工具,同样,我们程序员应借鉴它的代码组织方法,产品的过程.由于PHP的自身特点,在做web的数据逻辑时,controller和modelcontroller和model是一个正常的过程,它是"为了解决需要最简单方法",是非常正确的事情,如果截然以MVC的套路去,照搬模式,反而是条条主义.

在java中,以MVC思想去做,XML,DAO等来描述数据结构,把一个简单的数据处理过程,硬生生的拆分成几个部分,这样除了显示自己的"MVC"思想外,对运行效率,开发效率根本就是毒瘤.根本不是具体问题具体分析,而是毫无主见的体现。

我好欣赏java在做web是拆分的MVC, 如struct,spring,hibernate,做得非常优雅,但这仅仅是“理论”上的,实际使用上,却不太合适,这是因为它的MVC已超出实现的应用需要,这又是何必。(在做复杂的数据处理层时,SSH是不错的选择)

所以,在做web层时,不同的地方,有不同的应用方式,思想只是一个指导,不是成品的必然,程序员也要明白,世界上比自己利害的人有一大堆,不同人的实现方法不同,在实际的应用中,“条条大路通罗马”。

MVC是好东西,具体问题具体分析,更重要。

感谢指教

“思想只是一个指导,不是成品的必然”这句话说得好。我试用过Yii之后的感觉是能“通用”地解决问题,但是在我这种特定的场景下,不是很“贴合”实际。虽然有足够的证据证明Yii复杂的实现对性能牺牲不大,但是我还是觉得照搬这种模式不好。无论是开发者的角度(模式)还是用户的角度(性能)

最近觉得没有哪种框架能解决全部问题,这也是我想自己想一套贴合场景的设计模式的原因。现在想法也有些变了,觉得尽用框架不如无框架。这种想法下倒开始喜欢Zend的松散耦合,可以将组件单独拆出来使用,而不是去用一个类似解决方案的“一站式”框架

0
赵开锦
赵开锦

是的,学习过zend和Yii,后来又做个N个uchome、uc、discuz的二次开发项目,在现在我基本就不用框架了,现在的项目基本都是我自己从zend、yii、uchome、discuz中自己提炼了一个框架与模板来实现了。至于model层的问题也是如此,如果项目比较大,多人配合并且文档比较全的话那么还是用独立的model的,要是一个人赶一个小模块,也不要文档的,当然就直接在C层中直接在写sql处理。反正一个原则,怎么快怎么来吧,什么技术,什么优美,什么对象都是狗屁,Boss的工资才是最强的驱动啊。

我吃烤地瓜
我吃烤地瓜
不能同意太多
0
疯狂的流浪
疯狂的流浪

引用来自#6楼“赵开锦”的帖子

是的,学习过zend和Yii,后来又做个N个uchome、uc、discuz的二次开发项目,在现在我基本就不用框架了,现在的项目基本都是我自己从zend、yii、uchome、discuz中自己提炼了一个框架与模板来实现了。至于model层的问题也是如此,如果项目比较大,多人配合并且文档比较全的话那么还是用独立的model的,要是一个人赶一个小模块,也不要文档的,当然就直接在C层中直接在写sql处理。反正一个原则,怎么快怎么来吧,什么技术,什么优美,什么对象都是狗屁,Boss的工资才是最强的驱动啊。

Boss的工资才是最强的驱动啊。  哈哈

0
ValueError
ValueError

引用来自#7楼“疯狂的流浪”的帖子

引用来自#6楼“赵开锦”的帖子

是的,学习过zend和Yii,后来又做个N个uchome、uc、discuz的二次开发项目,在现在我基本就不用框架了,现在的项目基本都是我自己从zend、yii、uchome、discuz中自己提炼了一个框架与模板来实现了。至于model层的问题也是如此,如果项目比较大,多人配合并且文档比较全的话那么还是用独立的model的,要是一个人赶一个小模块,也不要文档的,当然就直接在C层中直接在写sql处理。反正一个原则,怎么快怎么来吧,什么技术,什么优美,什么对象都是狗屁,Boss的工资才是最强的驱动啊。

Boss的工资才是最强的驱动啊。  哈哈

呃。。。大二,尚未正式成为被工资驱动对象。。。

0
ddatsh
ddatsh

支持一下楼主大二就这样很好了

其它PEAR,PECL,和一些扩展类库
   
测试:phpunit编写测试用例完成代码的自动测试
管理:xinc, phing等完成工程管理的常用任务,例如工程编译、生成phpdoc、生成、版本控制、自动测试


博学:掌握OOA、OOD、DB、Zendframework、cakephp、symfony、模板技术等流行技术,掌握软件架构设计思想、搜索引擎优化、缓存系统设计、网站负载均衡、系统性能调优等实用技术

这些 你也去看看 然后再发篇感悟 大家一起讨论吧 :)

0
ValueError
ValueError

非常乐意和大家交流讨论,只是PHP上手不久,很多认识还是感性的,还要多向各位高手学习啊~

返回顶部
顶部