目前,有人使用的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,那肯定一样也有问题。太简陋的代码,不是需求考虑不全,就是代码不够强壮。
不过,按这样的要求,我到现在没有找到一个合适的。如果你找到了,请告诉我。
分享到:
相关推荐
在IT行业中,网页模板是一种非常实用的资源,尤其对于初学者和快速开发团队而言,它们提供了构建网站的基础结构和设计,极大地节省了时间和精力...因此,如果你正在寻找提升网站开发效率的方法,这些模板绝对值得一试。
11. PHP与Web框架:PHP常见的框架如Laravel、Symfony、CodeIgniter和Yii,提供了一套完整的开发架构,简化了项目开发。 12. PHP性能优化:包括使用opcode缓存(如APC、OpCache),减少数据库查询,优化代码逻辑,...
ASP.Net的快速开发是ASP.Net非常大的一个优点,可以加快开发效率,这是行业的发展趋势,但是局限于这样的“傻瓜化开发方式”的开发人员的竞争力和成长性都是非常有限的,遇到ASP.Net一些高级技术(比如ASP.Net MVC、...
【后台管理界面HTML】是一种专为网站或应用的管理员设计的用户界面,它通常包含一系列功能模块,用于数据管理、用户管理、设置调整等...如果你正在寻找一个后台管理界面的解决方案,那么下载这个资源肯定不会让你后悔。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
MMC整流器技术解析:基于Matlab的双闭环控制策略与环流抑制性能研究,Matlab下的MMC整流器技术文档:18个子模块,双闭环控制稳定直流电压,环流抑制与最近电平逼近调制,优化桥臂电流波形,高效并网运行。,MMC整流器(Matlab),技术文档 1.MMC工作在整流侧,子模块个数N=18,直流侧电压Udc=25.2kV,交流侧电压6.6kV 2.控制器采用双闭环控制,外环控制直流电压,采用PI调节器,电流内环采用PI+前馈解耦; 3.环流抑制采用PI控制,能够抑制环流二倍频分量; 4.采用最近电平逼近调制(NLM), 5.均压排序:电容电压排序采用冒泡排序,判断桥臂电流方向确定投入切除; 结果: 1.输出的直流电压能够稳定在25.2kV; 2.有功功率,无功功率稳态时波形稳定,有功功率为3.2MW,无功稳定在0Var; 3.网侧电压电流波形均为对称的三相电压和三相电流波形,网侧电流THD=1.47%<2%,符合并网要求; 4.环流抑制后桥臂电流的波形得到改善,桥臂电流THD由9.57%降至1.93%,环流波形也可以看到得到抑制; 5.电容电压能够稳定变化 ,工作点关键词:MMC
Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构的Simulink建模与MPPT最大功率点追踪:基于功率反馈的扰动观察法调整电压方向研究,Boost二级升压光伏并网结构,Simulink建模,MPPT最大功率点追踪,扰动观察法采用功率反馈方式,若ΔP>0,说明电压调整的方向正确,可以继续按原方向进行“干扰”;若ΔP<0,说明电压调整的方向错误,需要对“干扰”的方向进行改变。 ,Boost升压;光伏并网结构;Simulink建模;MPPT最大功率点追踪;扰动观察法;功率反馈;电压调整方向。,光伏并网结构中Boost升压MPPT控制策略的Simulink建模与功率反馈扰动观察法
STM32F103C8T6 USB寄存器开发详解(12)-键盘设备
科技活动人员数专指直接从事科技活动以及专门从事科技活动管理和为科技活动提供直接服务的人员数量
Matlab Simulink仿真探究Flyback反激式开关电源性能表现与优化策略,Matlab Simulink仿真探究Flyback反激式开关电源的工作机制,Matlab Simulimk仿真,Flyback反激式开关电源仿真 ,Matlab; Simulink仿真; Flyback反激式; 开关电源仿真,Matlab Simulink在Flyback反激式开关电源仿真中的应用
基于Comsol的埋地电缆电磁加热计算模型:深度解析温度场与电磁场分布学习资料与服务,COMSOL埋地电缆电磁加热计算模型:温度场与电磁场分布的解析与学习资源,comsol 埋地电缆电磁加热计算模型,可以得到埋地电缆温度场及电磁场分布,提供学习资料和服务, ,comsol;埋地电缆电磁加热计算模型;温度场分布;电磁场分布;学习资料;服务,Comsol埋地电缆电磁加热模型:温度场与电磁场分布学习资料及服务
1、文件内容:ibus-table-chinese-yong-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-yong-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
基于51单片机protues仿真的汽车智能灯光控制系统设计(仿真图、源代码) 一、设计项目 根据本次设计的要求,设计出一款基于51单片机的自动切换远近光灯的设计。 技术条件与说明: 1. 设计硬件部分,中央处理器采用了STC89C51RC单片机; 2. 使用两个灯珠代表远近光灯,感光部分采用了光敏电阻,因为光敏电阻输出的是电压模拟信号,单片机不能直接处理模拟信号,所以经过ADC0832进行转化成数字信号; 3. 显示部分采用了LCD1602液晶,还增加按键部分电路,可以选择手自动切换远近光灯; 4. 用超声模块进行检测距离;
altermanager的企业微信告警服务
MyAgent测试版本在线下载
Comsol技术:可调BIC应用的二氧化钒VO2材料探索,Comsol模拟二氧化钒VO2的可调BIC特性研究,Comsol二氧化钒VO2可调BIC。 ,Comsol; 二氧化钒VO2; 可调BIC,Comsol二氧化钒VO2材料:可调BIC技术的关键应用
C++学生成绩管理系统源码
基于Matlab与Cplex的激励型需求响应模式:负荷转移与电价响应的差异化目标函数解析,基于Matlab与CPLEX的激励型需求响应负荷转移策略探索,激励型需求响应 matlab +cplex 激励型需求响应采用激励型需求响应方式对负荷进行转移,和电价响应模式不同,具体的目标函数如下 ,激励型需求响应; matlab + cplex; 负荷转移; 目标函数。,Matlab与Cplex结合的激励型需求响应模型及其负荷转移策略
scratch介绍(scratch说明).zip
内容概要:本文全面介绍了深度学习模型的概念、工作机制和发展历程,详细探讨了神经网络的构建和训练过程,包括反向传播算法和梯度下降方法。文中还列举了深度学习在图像识别、自然语言处理、医疗和金融等多个领域的应用实例,并讨论了当前面临的挑战,如数据依赖、计算资源需求、可解释性和对抗攻击等问题。最后,文章展望了未来的发展趋势,如与量子计算和区块链的融合,以及在更多领域的应用前景。 适合人群:对该领域有兴趣的技术人员、研究人员和学者,尤其适合那些希望深入了解深度学习原理和技术细节的读者。 使用场景及目标:①理解深度学习模型的基本原理和结构;②了解深度学习模型的具体应用案例;③掌握应对当前技术挑战的方向。 阅读建议:文章内容详尽丰富,读者应在阅读过程中注意理解各个关键技术的概念和原理,尤其是神经网络的构成及训练过程。同时也建议对比不同模型的特点及其在具体应用中的表现。