设为首页 收藏本站
查看: 509|回复: 0

[经验分享] 如何寻找一个不会让你后悔的PHP开发框架

[复制链接]

尚未签到

发表于 2017-4-10 06:15:19 | 显示全部楼层 |阅读模式
  目前,有人使用的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,那肯定一样也有问题。太简陋的代码,不是需求考虑不全,就是代码不够强壮。
        不过,按这样的要求,我到现在没有找到一个合适的。如果你找到了,请告诉我。
   

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-362580-1-1.html 上篇帖子: 整理活:PHP的日期时间函数date() 下篇帖子: 8.构造方法与析构方法 php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表