`
bardo
  • 浏览: 380179 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11853
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10171
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9547
社区版块
存档分类
最新评论

如何寻找一个不会让你后悔的PHP开发框架

    博客分类:
  • PHP
阅读更多

        目前,有人使用的PHP框架有400多。很多开发了发布的PHP框架可以说是近乎上千个之多。在选择PHP开发框架时,很多人都会陷入迷茫,或因此走很多弯路。
        因此,我们这里简单讲一下,如何寻找一个不会让你后悔的PHP开发框架。
        首先要明确,先择框架,绝不是为了学习,也不是为了做一个企业网站或小型个人网站。面临选择问题的根本点在于,你这个网站是大型网站,或将来会成为大型网站。你不能因为框架而阻碍你的发展。
        那么,我们先讲一下,目前选择框架的种种误区:
        1、选择流行的。并非流行的就是非常好的。举例来说,CI相当流行。但CI只能用于小型网站开发,并且,可扩展性相当差,它的最大的优点是初学者易上手。但不能很好地运用PHP5面向对象的特性。
        2、选择官方的。无非就是用Zend,但它并不是最具扩展性的代码,或者,它的一切也只有在ZEND SERVER中才能充分体现。可ZEND SERVER是要收费的。另一坏处,那就是,它的更新速度并不是很快。一个很复杂的代码,相对于一个网站的发展,无法等待官方的更新,需要时,你需要自己去修改的。所以,以官方更新有保障,这是靠不住的理论。
        3、选择简单的。目前国产的,声称极简单的框架也不下于上百种。但这些简单的框架,实际最终会浪费你很多的时间。为什么呢?比如,无日志,出错后,不知错在何处。无TRACE,跟踪调试不方便。
        那么,我们选择框架有什么样的标准昵?
        1、完全面向对象。这可不是说着玩玩的。我们要明确,面向对象的目的是什么?面向对象根本目的是在于:
        可以扩展,松耦合。
        如何可以扩展?相当简单,你不用多看代码,只要用搜索工具统计一下以下的字串:
        final 这表示是最终类,或最终方法,是对继承的保护。比如,单件模式中,肯定有 fincal function __clone,以保护其永远都是单件的。
        abstract 抽象类,抽象类中就有抽象函数。这表明开发人能够面向抽象编程,用抽象函数,给你留下了可扩展的接口。
        interface 当一个抽象类中完全是由抽象函数组成,并且,这些抽象函数均是必须实现的,那就会定义 interface。如果没有,那你就没有可扩展的可能。
        private protected 这是访问控制。如果有这些,则表明,代码封装有相当可靠的安全性。不会让用户访问不可访问的方法或属性。
        2、代码质量。
        除了按一般编程规范以外,代码应当是软编码。所谓软编码,即是指动态扩展是相当方便的。对于此,最简单的方法,是搜索一下case. 因为, switch case 结构是硬编码。如果你增扩一项,你必须到switch中增加一个case.破坏了原有核心代码的封装。
        函数长度。一个函数最长不允许超过140行。否则,可维护性极差。比如,zend date中有一函数即是有大量switch case,并且,一个函数超过了1000行。这样的代码,谁看了都晕。
        3、必须的功能。
        用框架,就是使用的框架提供的现成的功能,如果一些基本功能都没有实现,那不如不用。而这些必须的功能,基本有以下一些;
        autoload 自动加载,有它,会让你的代码写得更少。因为,省下了很多的 include, require
        cache 必须是多种cache支持的,以适用于你当前所用的主机空间或服务器
        config配置文件读取与管理,这是必不可少的,有配置,会省下大量代码。
        MVC,即模型,视图与控制器。其中控制器的实现最为重要,效率,易用性,可扩展性。假如使用get_broswer函数获取UA的,最好不用。因为get_broswer函数实在是效率太差。
        ErrorHandle ExceptionHandle 错误与异常管理,没有这个,程序出错不会受到管理,你无法了解,哪里因为什么样的原因错了。
        Logger日志,错误要写日志,性能监控也要写日志,我们不要求代码中有多少性能监控,但出错至少要有详细的日志写出来。同时,日志因当有多少输出,文件,邮件,控制台,页面,这样的话,当你网站成为大型网站时,添加一个日志短信输出,就很方便。并且,日志要有过滤,哪些日志如何输出,有这样好的定义,使用就相当方便。
        validator filter 验证与过滤,用户输入,必须要验证,否则,SQL 注入,网站安全不可保证。过滤器,这是必须的,总不能把用户录入的脏字再显示到页面上吧。
        session 这是必须的,多种session支持也是必须的。 因为, 多台服务器共享session,那就不再是phpSession
        数据库,大网站肯定是必须的,是否能支持多库,是否有分库管理与对应的算法访问机制。
        必须的常用类库,日期时间,上传下载,文件管理,
        非必须的常用类库,如图象处理,邮件,当然,这些是有优秀的第三方的。所以,不是必须。但如果有,则只能说明,框架开发者开发得相当用户。并且,他提供的肯定有独特之处。
        最后则是,有没有模板引擎,或者有没有部件支持,因为,VIEW中有了这些,会大大加快开发速度,并且,这也是MVC基本的必须组件。
        到这里,大家不妨看一下,所谓20KB的框架,是否有用?是否能用?
        当然,这些代码会有多大?实际也不是越大越好,zend的50MB肯定有问题。但如果不足5M,那肯定一样也有问题。太简陋的代码,不是需求考虑不全,就是代码不够强壮。
        不过,按这样的要求,我到现在没有找到一个合适的。如果你找到了,请告诉我。
   

2
0
分享到:
评论
5 楼 bardo 2011-01-14  
rtxbc 写道
北京的大公司,都用自己的框架

这是必然的,因为,开源中找不到,只能自己做了。我们也一样。
4 楼 rtxbc 2011-01-14  
比如phpcms,是盛大开发的,
我看过他们的代码,里面的框架也是他们自己开发的。

有很多地方可以拿过来模仿。自制一下,最基本的就是mvc分离。
3 楼 rtxbc 2011-01-14  
北京的大公司,都用自己的框架
2 楼 bardo 2011-01-13  
lj3362569 写道
yii 呵呵 你要的都有

YII不是使用的ADODB吗?没有方便的ORM,是否支持多数据库分库操作?不够理想吧?你是在做广告?
1 楼 lj3362569 2011-01-13  
yii 呵呵 你要的都有

相关推荐

    超精美网页模板,不下后悔

    在IT行业中,网页模板是一种非常实用的资源,尤其对于初学者和快速开发团队而言,它们提供了构建网站的基础结构和设计,极大地节省了时间和精力...因此,如果你正在寻找提升网站开发效率的方法,这些模板绝对值得一试。

    php手册 超级实用,不下别后悔!

    11. PHP与Web框架:PHP常见的框架如Laravel、Symfony、CodeIgniter和Yii,提供了一套完整的开发架构,简化了项目开发。 12. PHP性能优化:包括使用opcode缓存(如APC、OpCache),减少数据库查询,优化代码逻辑,...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    ASP.Net的快速开发是ASP.Net非常大的一个优点,可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.Net MVC、...

    后台管理界面HTML

    【后台管理界面HTML】是一种专为网站或应用的管理员设计的用户界面,它通常包含一系列功能模块,用于数据管理、用户管理、设置调整等...如果你正在寻找一个后台管理界面的解决方案,那么下载这个资源肯定不会让你后悔。

    避开10大常见坑:DeepSeekAPI集成中的错误处理与调试指南.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    前端分析-2023071100789

    前端分析-2023071100789

    基于kinect的3D人体建模C++完整代码.cpp

    基于kinect的3D人体建模C++完整代码.cpp

    搞机工具箱10.1.0.7z

    搞机工具箱10.1.0.7z

    GRU+informer时间序列预测(Python完整源码和数据)

    GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。

    性价比革命:DeepSeekAPI成本仅为GPT-4的3%的技术揭秘.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水

    基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

    复件 复件 建设工程可行性研究合同[示范文本].doc

    复件 复件 建设工程可行性研究合同[示范文本].doc

    13考试真题最近的t64.txt

    13考试真题最近的t64.txt

    Microsoft Visual C++ 2005 SP1 Redistributable PackageX86

    好用我已经解决报错问题

    嵌入式开发入门:用C语言点亮LED灯的全栈开发指南.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    auto_gptq-0.4.2-cp38-cp38-win_amd64.whl

    自动立体库设计方案.pptx

    自动立体库设计方案.pptx

    手把手教你用C语言实现贪吃蛇游戏:从算法设计到图形渲染.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    性能对决:DeepSeek-V3与ChatGPTAPI在数学推理场景的基准测试.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics