面试官问PHP四大主流框架的优缺点,看这篇就够了!
本篇文章我们来讲讲PHP四大框架的优缺点都有哪些,让你们在开发中更好的去选择使用哪款PHP框架去完成项目,废话不多说,我们一起来看看吧!!
ThinkPHP
ThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。 ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的兼容性较强,但是其功能有限,因此更适合用于中小项目的开发。
优点:
- 易于上手,有丰富的中文文档;
- 框架的兼容性较强,PHP4和PHP5完全兼容、完全支持UTF8等。
- 适合用于中小项目的开发
缺点:
- 对Ajax的支持不是很好;
- 目录结构混乱,需要花时间整理;
- 上手容易,但是深入学习较难。
Yii
Yii 是一个基于组件的高性能php框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了 今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。
优点:
- 纯OOP
- 用于大规模Web应用
- 模型使用方便
- 开发速度快,运行速度也快。性能优异且功能丰富
- 使用命令行工具。
缺点:
- 对Model层的指导和考虑较少
- 文档实例较少
- 英文太多
- 要求PHP技术精通,OOP编程要熟练!
- View并不是理想view,理想中的view可能只是html代码,不会涉及PHP代码。
CodeIgniter
优点:
Code Igniter推崇“简单就是美”这一原则。没有花哨的设计模式、没有华丽的对象结构,一切都是那么简单。几行代码就能开始运行,再加几行代码就可以进行输出。可谓是“大道至简”的典范。 配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路 由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能. 快速简洁,代码不多,执行性能高,框架简 单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用.
缺点:
本身的实现不太理想。内部结构过于混乱,虽然简单易用,但缺乏扩展能力。 把Model层简单的理解为数据库操作. 框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要.
评价:
总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不 错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。至于附加的library 也还不错,简洁高效。
Laravel 框架
优点:
- Laravel 的设计思想是很先进的,非常适合应用各种开发模式TDD, DDD 和BDD,作为一个框架,它准备好了一切,composer 是个php 的未来,没有composer,PHP 肯定要走向没落。
- laravel 最大的特点和优秀之处就是集合了php 比较新的特性,以及各种各样的设计模式,Ioc 容器,依赖注入等。
缺点:
- 基于组件式的框架,所以比较臃肿
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以戳这里https://shimo.im/docs/rjJttdvCJpYtHpW3/ 《进阶PHP月薪30k>>>架构师成长路线【视频、面试文档免费获取】》
最新文章
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(一)
- 2017年";程序媛和工程狮";绝对不能忽视的编程语言、框架和工具
- 分享50款 Android 移动应用程序图标【上篇】
- Tools - 为知笔记
- CSS3里的常用选择器总结
- Centos6.5系统初学者基本系统配置1
- HDU 4643 GSM 算术几何
- 关于c:\fakepath\的解决办法
- Windows 7 with SP1简体中文旗舰版(微软MSDN原版)+ 激活密钥
- HTML禁止使用右键
- IntelliJ IDEA 发布13版本——创造java奇迹
- Java 递归调用 recursive 给一个参数 返回一大堆
- ●CodeForces 549F Yura and Developers
- C3垂直居中均分
- python3中的 zip()函数 和python2中的 zip()函数 的区别
- iead2018创建JavaWe工程
- matplotlib柱状图-【老鱼学matplotlib】
- python 代码模板
- cf1108e 线段树区间更新+扫描线
- CentOS安装JDK9
热门文章
- window.locationbar
- [转]什么是 C 和 C ++ 标准库?
- Unity3d 拖拽脚本报错Can't add the script component ";"; because the script class cannot be found
- Redis常用数据类型及其存储结构(源码篇)
- fixed实现遮罩层,小程序
- ffmpeg:为视频添加静态水印
- Oracle 开启或关闭归档
- SpringBoot(三):SpringBoot热部署插件
- .Net Core 3.1浏览器后端服务(四) 你眼中的依赖注入与我相同吗?
- 腾讯云容器服务 TKE 拿下新加坡 MTCS 最高级别安全认证