PHP框架的基本原理以及选择标准
PHP框架的原理
说到PHP框架,可能很多PHP新手会感到有些胆怯。其实,PHP框架也不是那么深不可测的,框架就是别人使用PHP基础只是为你写好了的东西,只是封装在一起;这就好比我们使用PHP的函数,函数都是已近写好了的,我们只要按照函数使用的规则,比如,为函数传递参数的个数、类型以及函数返回的值类型等。理解了PHP函数的这些使用规则,我们就可以大胆、放心的去使用了。同样道理,PHP框架也有自己的规则,比如项目文件夹的部署、控制器类的命名规则以及数据表的命名规则等。了解了PHP框架的使用规则我们就能去使用PHP框架提供的全部功能了。
PHP框架并不是那么高不可攀,每位PHP程序员都应该加入到PHP框架的学习和使用中来,毕竟一个人的精力是有限的,如何你每个项目都全部由自己开发的话,那么你将浪费许多时间用在做相同的事情上。比方说,几乎每个项目都有数据的验证,那么你要为每个项目都要编写数据验证的PHP代码,而如果你使用PHP框架的话,这些都是封装了可以直接拿来使用的。
PHP框架也是使用PHP的基本知识来写的,没有必要看到框架二字就退缩了。对PHP基础知识非常熟悉的话,学习PHP框架是件轻松而快乐的事情。框架的使用会给你的项目节省50%左右的项目周期时间。
PHP框架的优点
1、PHP框架使代码更安全。一般PHP框架都采用单入口文件的模式,我们只要在入口文件进行验证即达到了所有文件验证的目的。
2、PHP框架缩短了项目开发周期,这可能是最大的优点了。
3、使用PHP框架架构项目思路清晰、结构明显。
PHP框架选择标准
在如此多的PHP MVC框架中,怎样去选择一款各方面都不错的框架学习并在项目中使用它?这是每一个PHPer都会面临的问题。比如当前比较流行的框架有:ZendFrameWork、ThinkPHP(国产)、CodeIgniter、YII等。每个人心目中的好坏标准不一样,再加上有的人习惯了某框架,想让他再接受其优秀的框架也是比较难的。所以,我们应该怎样去判断一款框架是否属于自己,变得非常的突出。现在我给出几个标准:
- 性能
所谓的性能指的是IO、CPU占用、PHP解析时间等几个指标。当前的服务器最突出的问题是CPU已经非常快了,内存已经够大够便宜了,唯独硬盘IO不够高。这就像一个一个智商150与一个智商80的人做1+1一样,根本体现不出智商的优越性。 - 全栈式
虽然我个人不太赞成PHP框架过度全栈式。但是,如果能把全栈式做到优雅简洁,我也是非常兴奋的。什么是全栈式?就是一款框架包含了WEB开发中所有的东西。比如:上传、分页、导入导出、邮件、日志、错误、二维码、RSS、RBAC等。这样的话,才能真正解决掉我们去自己实现的麻烦,节省我们的时间。也提高了代码的安全性移植性。 - 学习难度是否陡峭
毕竟我们要运用到实际的项目中。以后陆续还会添加更多的人进入项目开发中。如果,学习难度过于陡峭,势必会影响项目的进度和后期维护的成本。目前,我用过的框架中ThinkPHP做得还不错,文档还比较完整易懂。换作正在用的YII框架,简直是头痛。提供的文档实在是过于简单,示例不够丰富。而且,代码不够优雅。在某些设计上,过于面向对象,导致在PHP这种语言中操作起来不是特别顺手。 - 框架社会是否活跃
一个社区活跃与否,直接关系到这个框架的未来的命运。谁也不希望今天还牛逼的框架,就因为没有与时俱进,最终淹没在历史的长河中。自己又得花时间掌握新框架。比如:前几天MongoDB还是比较火的时候,当时几乎没有框架在DB层,即ORM实现这个数据库的接口。而项目中可能会考虑使用MongoDB。当时几个比较知名的且速度比较过得去的框架都没有支持。结果,还是咱们国产的ThinkPHP支持了。虽然,BUG可能有点多。至少,某种程度说明了一个活跃的社区是非常有必要的。 - 框架使用的群体大小
一款框架再牛逼,如果没有人使用。你学了也只能在自己的一亩三分地有所建树。出了这个圈,效果就不明显了。PHPer学习这个东西,主要还是为了能找一份高薪顺手的工作。如果,学了半天,结果却没有人用这个框架在项目中。那是相当悲催的。
- 性能
PHP框架的基本原理以及选择标准的更多相关文章
- PHP IDE选择标准
2017年11月17日09:35:01 这里记录一下PHP IDE的选择标准 1. 是否有错误提示, 对于一些 `缺少分号`, `花括号不配对`, `变量未定义就使用`等待的提示是要有的 2. 代码 ...
- 查看Eclipse版本号的方法及各个版本区别 Eclipse选择标准
这篇文章主要介绍了查看Eclipse版本号的方法及各个版本区别 Eclipse选择标准,方便初学者选择适合自己的版本,需要的朋友可以参考下 Eclipse 是一个开放源代码的.基于Java的可扩展开发 ...
- 深度学习Keras框架笔记之Dense类(标准的一维全连接层)
深度学习Keras框架笔记之Dense类(标准的一维全连接层) 例: keras.layers.core.Dense(output_dim,init='glorot_uniform', activat ...
- App如何选择移动广告平台的开发者3 - 选择标准广告平台
App开发公司.通常他们不能走品牌.要挑品牌的能力,我们将面临两大问题:业务团队.广告填充率.一系列的问题,以现金周期. 无线商务本才刚刚开始,大多数都是没有商业经验.产品.设计.运营.销售的人才都不 ...
- 前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...
- ASP.NET Web API 框架研究 Action的选择
如何从HttpController众多方法里如何选择出有效的Action方法?主要分一下几个步骤: 首先,获取候选HttpActionDescriptor列表(ILookup(string,HttpA ...
- 分布式计算框架-MapReduce 基本原理(MP用于分布式计算)
hadoop最主要的2个基本的内容要了解.上次了解了一下HDFS,本章节主要是了解了MapReduce的一些基本原理. MapReduce文件系统:它是一种编程模型,用于大规模数据集(大于1TB)的并 ...
- BI工具的选择标准有哪些?
作为企业的IT部门如果没有良好的BI工具支持,IT部门将会十分容易陷入困境.那么面对多元化的BI工具市场,IT部门如何选择BI工具呢?BI工具选择的标准又是什么?Smartbi将为大家做一个简单的解答 ...
- rpc选择标准
衡量RPC好用与否的几条标准: 真的像本地函数一样调用 使用简单,用户只需要关注业务即可 灵活,RPC调用的序列化方式可以自由定制,比如支持json,支持msgpack等方式 http://www.o ...
随机推荐
- BZOJ4571 [Scoi2016]美味 【主席树】
题目 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 bi,而他的偏好值为 xi .因此,第 i 位顾客认为第 ...
- 北京集训TEST13——PA(第k小数)
题目: Description [问题描述] 从n个数中选若干(至少1)个数求和,求所有方案中第k小的和(和相同但取法不同的视为不同方案).[输入格式] 第一行输入2个正整数n,k. 第二 ...
- axis2生成webservice服务端返回String[]和String[][]一维数组和二维数组解析
环境:用axis2生成服务端,用aixs做客户端 1:直接返回String[]: public String[] testArr(String name) { String[] ret=new Str ...
- chef and churu 分块 好题
题目大意 有一个长度为n的数组A 有n个函数,第i个函数 \[f(l[i],r[i])=\sum_{k=l[i]}^{r[i]}A_k\] 有两种操作: 1)修改A[i] 2)询问第x-y个函数值的和 ...
- CSS3 动画卡顿性能优化解决方案--摘抄
最近在开发小程序,与vue类似,它们都有生命周期这回事. onLoad 监听页面加载 onReady 监听页面初次渲染完成 onShow 监听页面显示 到底是什么意思? 所以这又触碰到了我的知识盲区, ...
- vue.js源码学习分享(二)
/** * Check if value is primitive//检查该值是否是个原始值 */ function isPrimitive (value) { return typeof value ...
- C# DataSet与DataTable的区别和用法
DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable.DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面. ...
- nVidia的物理系统
PhysX PhysX(wiki en 中文,physx wiki physx wiki2)是nVidia公司一款跨平台实时物理引擎,可使用硬件(GPU.PPU: Physics Process ...
- awk数组详解、实战
1.其它编程语言数组的下标一般从0开始,awk中数组下标默认从1开始,也可以从0开始设置: awk 'BEGIN{huluwa[0]="大娃";huluwa[1]="二娃 ...
- commons-lang3工具类学习--------ObjectUtils
Object工具类 allNotNull(Object... values) 检查所有元素是否为空,返回一个boolean 如果有一个元素为空返回false,所有元素不为空或元素为empty返回tru ...