`
renzhen
  • 浏览: 250908 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP框架,伤不起啊,伤不起

    博客分类:
  • PHP
阅读更多

自从Rails刮起了一阵框架风,其它语言群起响应,Java,Python,Scala,PHP,无论静态动态语言都出现了模仿Rails模式的框架出现,其中,PHP语言的框架生产力更是一流,主流的PHP框架就有超过5种,加上不出名的框架的话,我估计起码有20多种框架,可怕的数量!!

PHP框架之路一直充满着争议,从PHP要不要用框架,到应不应该模仿Rails,却抵不上PHP框架的井喷式的增长,各类框架你方唱罢我登场,网上仅仅是罗列部分框架和简介就能成为一片文章,名为《国外十大最流行PHP框架排名》。PHP框架中比较知名的有:CodeIgniter、CakePHP等中小型框架和Zend、Symfony等大型框架。我一直在想为什么PHP的框架数量如此之多呢?
1. PHP开发框架太‘容易’了
不要骂我,说实话,PHP开发Web框架的门槛比起其他的语言,真的要低太多了,PHP本身已经有了对Web的支持,要做一个框架,只要先写一个单入口index.php,然后通过module和action参数执行对应的Controller类,和View代码,一个非常简单的框架就好了,熟练的程序员一两天就完成了。如果觉得太简单,再稍微封装一下,把$_REQUEST,$_SESSION封装一下,封装一下数据库操作等等。到这里一个有模有样的PHP‘MVC框架’就基本出炉了。熟练一点程序员一周时间搞定了。
相反其他语言,以ruby为例,光是对REQUEST的处理,参数解析等基础功能实现,就远远不止一周的工作量,在加上ruby语言的高灵活性和复杂的语法,使他开发一款拿的出手的框架所需要的精力是大大的超越一般,开发框架的门槛低是PHP框架泛滥的因素之一。

 

2. PHP的封装能力弱,致使框架的灵活度不够
这也是事实,PHP的框架很多,但是一般要评估项目,来选择适当的框架,如果是一个简单的web项目,一般选择CodeIgniter、CakePHP这类框架,如果是大型的应用,也会选择Zend、Symfony等大型框架,因为你会发现使用Zend和CodeIgniter完全是两回事。
也许我说的抽象了,那我举个例子:在默认的PHP环境中,是没有AOP功能的,不能对类的已有方法进行功能性增强,在需要实现类似功能的情况下,你就需要显示的修改外面的代码,非常流行的做法是利用PHP的魔法函数,但是依然需要修改对象的创建方法。
依然对比Ruby,它几乎是内置了AOP支持,可以在完全外部调用完全不变的情况下完成功能的增强。
在框架的封装中这种能力的差异就更加的显著,在PHP中框架复杂度高也提高了使用者的难度,而不能像Ruby等完全将复杂性隐藏在框架的内部。(说句题外话:javascript也是如此,jquery便是佐证)。

 

3. PHP的实现机制,使得框架的性能成为诟病
PHP的运行模式,每次request结束都会完全释放所有资源,导致框架的加载成为了一个不可忽视的性能累赘,即使你不介意上面提到大型框架的使用复杂度高,这个原因也让你不会在中小型项目中轻易使用Zend等大型框架。同时也限制了框架的能力。

据我分析,正是这三个原因,使得PHP的框架如此之多,但是没有一个成为真正的主流。这种情况未必是好事,在Ruby中,Rails一统,使得Rails社区空前繁荣,很多Ruby高手开发各种插件增强的它的功能。使得它有着十分良性的发展。在js框架中jquery也有着相同的经历。
在PHP中,高手则是不停的贡献它们的新框架,老实说我个人觉得帮助很有限,更是搅浑了这一缸水,其实很多框架完全可以合并为一个发展,与其出现100个60分的框架,不如出现一个100分的好框架。PHP框架,多的让我伤不起啊伤不起。 

分享到:
评论

相关推荐

    程序员你伤不起

    程序员你伤不起,有兴趣的人看看吧。 好像没有什么用。

    伤不起游戏

    "伤不起游戏"是一款以健康检测为主题的自开发应用程序,主要针对Android平台。在这个游戏中,用户可以通过互动的方式了解自己的身体健康状况,提高对健康的关注和自我管理能力。作为一个Android应用,它利用了...

    黑色7月DNS频频出现故障 站长你伤不起啊.docx

    黑色7月DNS频频出现故障 站长你伤不起啊.docx

    禅易解盘:“狼来了”喊太多,真伤不起.pdf

    禅易解盘:“狼来了”喊太多,真伤不起.pdf

    初中语文文摘历史蒙冤的陈世美伤不起

    标题中的“初中语文文摘历史蒙冤的陈世美伤不起”主要涉及的是对历史人物陈世美的重新审视,这是一个关于历史与文化误解的话题。陈世美在传统戏曲《秦香莲》或《铡美案》中被描绘为一个忘恩负义、薄情寡义的负面角色...

    高中历史之历史百科班主任提醒:寒假仅剩一周现在不收心开学伤不起素材

    高中历史之历史百科班主任提醒:寒假仅剩一周现在不收心开学伤不起素材

    美久广场舞伤不起教学_美久广场舞十六步教学视频.docx

    【标题】和【描述】提及的是一个关于"美久广场舞"的教学资源,特别是"伤不起"和"十六步"这两个舞蹈动作的教学视频。广场舞作为一种大众化的休闲活动,深受不同年龄段人群的喜爱,尤其在中老年人群中广泛流行。它不仅...

    初中语文文摘历史物理学牛人那些伤不起的岁月

    这篇文章以轻松的叙述方式讲述了三位物理学巨匠——普朗克、爱因斯坦和玻色——在他们早年遭遇挫折但最终开创物理学新时代的故事。这些故事揭示了他们在学术道路上的坚韧不拔和对科学的执着追求。...

    ACM做题代码

    【ACM做题代码】是针对ACM(国际大学生程序设计竞赛)的一种资源集合,它包含了一系列用于训练和解决问题的代码实例。ACM竞赛旨在考验参赛者的编程技能、算法理解和问题解决能力,因此这些代码是对ACM算法的具体体现...

    基于thinkphp图书管理系统

    ThinkPHP,作为一款国内广泛使用的PHP框架,以其简洁的语法、强大的功能和丰富的社区支持,深受开发者喜爱。本文将深入探讨一个基于ThinkPHP框架编写的图书管理系统,帮助初学者更好地理解和应用这一框架。 图书...

    PHP编程基础-数组

    该PPT介绍PHP编程基础知识中数组的内容,帮助有需要的朋友了解如何使用数组以及常用函数等知识。

    学生校园卡管理系统

    本文将深入解析一款基于PHP开发的学生校园卡管理系统,该系统为本科毕业设计项目,提供了管理员和学生的不同权限操作,旨在实现校园内消费、门禁、图书借阅等多种功能的一体化管理。 首先,我们要理解“校园卡”的...

    新浪微博微游戏平台 c# .NET SDK

    新浪微游戏平台的 .NET版本的SDK。 为啥只提供PHP JAVA !.NET的人也伤不起。用这个SDK轻松接入你的产品吧。 本sdk为开源sdk,欢迎大家继续完善。有任何问题可以邮件到 wsuresure@gmail.com

    flashfxp4.0.0

    flashfxp4.0.0已经破解。推荐给大家,方便工作开展。胡乱评价伤不起啊!

    wordpress主题:囧猴仿糗事百科 v1.9

    2、安装后可能会出错,记得安装好压缩包中的分页插件,别不会安装又骂街,伤不起。说明:因网站即将改版,所以免费分享,这为后续更新说明。wordpress主题:囧猴仿糗事百科 v1.9 2014.10.31更新日志:1、删除不必要...

    Quick Batch File Compiler

    找工具的人伤不起啊 哥也是过来人,能体会到各位的艰难与无辜 哥今天亲情大酬宾,挥泪大赠送 全场5折啦,聚划算有木有 凡下载本工具的,店主赠送注册码一枚。 问:这么好的工具多少分呀?答:只要5分,对你们没有听...

    SlickEdit 用MDK工具编译STM32的例程

    有人说以前的编译不过,不能用所以做了这个简单编译工程来示范怎么用SLICKETDIT 编译STM32,具体说明会有一个简单的说明...打字慢真的伤不起。) 分数嘛。。。以前大家给太多了, 现在基本上是用不完的,不用给了。

    考研英语历年真题

    考研必备,考研的孩子伤不起啊,这里囊括了近年来的英语真题,多做真题可定能提高的

Global site tag (gtag.js) - Google Analytics