对laravel框架你了解多少,为什么说是优雅的框架

文章来自-微信公众号:PHP面试题


面试PHP,有时候也会被问起使用的框架的一些问题,这里就框架Laravel给大家做了一个总结。

laravel框架最大的特点和优秀之处就是集合了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等


一、Laravel有哪些特点

1 强大的rest router:用简单的回调函数就可以调用,快速绑定controllerrouter

2 artisan:命令行工具,很多手动的工作都自动化

3 可继承的模板,简化view的开发和管理

4 blade模板:渲染速度更快

5 ORM操作数据库

6 migration:管理数据库和版本控制

7 测试功能也很强大

8 composer也是亮点

9 laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等


二、架构模式

laravel框架是使用了服务组件化的开发模式,由多个服务提供者构成了组件,再由多个组件提供不同的服务,然后是多个服务构成了项目

服务提供者是应用配置的核心,是通过 register方法中绑定服务到服务容器的。


三、涉及到的设计模式

laravel框架使用了大量设计模式,使模块之间耦合度很低,服务容器可以方便的扩展框架功能以及编写测试。

1.ORM - 对象关系映射模式

2 依赖注入与IOC容器 - 策略模式

3 监听与触发 - 观察者模式

4 门面模式 - 静态代理

还有其他的,比如注册服务的时候用到单例模式等。


四、服务方面

能快速开发出功能,自带各种方便的服务,比如数据验证、队列、缓存、数据迁移、测试、artisan 命令行等等,还有强大的 ORMartisan强大的命令行工具,实现自动化。

Laravel安全功能有效地利用了盐散列和加密码机制,Bcrypt哈希算法”来创建加密密码。


五、框架的其他知识点

服务容器:是一个用于管理类依赖和执行依赖注入的强大工具。其实质是通过构造函数或者某些情况下通过「setter」方法将类依赖注入到类中。

门面:为应用服务容器中的绑定类提供了一个「静态」接口 ,优点:在维护时能够提供更加易于测试、更加灵活、简明优雅的语法。

契约:用来规划服务提供者的格式、方法、参数等,给服务提供者规范了一定约束。

反射:主要用来动态地获取系统中类、实例对象、方法等语言构件的信息,通过发射API函数可以实现对这些语言构件信息的动态获取和动态操作等。

后期静态绑定:用于在继承范围内引用静态调用的类,即在类的继承过程中,使用的类不再是当前类,而是调用的类。


六、生命周期

生命周期如下:

入口文件-请求web服务器导入这个文件-载入 Composer 生成的自动加载启动核心文件-内核启动(服务提供者启动框架的各种组件)-交给路由分发到到(控制器,中间件等)-逻辑处理-返回结果


七、laravel框架运用到的repository模式的主要思想

建立一个数据操作代理层,把controller里的数据操作剥离出来,这样做有几个好处:

1 把数据处理逻辑分离使得代码更容易维护

2 数据处理逻辑和业务逻辑分离,可以对这两个代码分别进行测试

3 减少代码重复

4 降低代码出错的几率

5 让controller代码的可读性大大提高


还有其他的,大家可以留言做总结哈!

本作品采用《CC 协议》,转载必须注明作者和本文链接
程序员的福利:免费获取 JetBrains 全家桶激活码 推荐:【点击这里获取 。。。激活码适用:AppCode, CLion, DataGrip, DataSpell, dotCover, dotMemory, dotTrace, goland, IntelliJ IDEA Ultimate, phpstorm, pycharm, ReSharper
Laravel00
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

笨、重、跑不动! :joy:

2年前 评论
orange1994

我觉得开发中laravel的很多功能完全是冗余,比如自带的auth还有数据库迁移啥的,完全是坑爹的存在。

2年前 评论
Diudiuuuu 2年前
liaosp 2年前
❤seven 2年前
orange1994 (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
资深程序猿 @ XX科技
文章
62
粉丝
37
喜欢
249
收藏
571
排名:284
访问:3.3 万
私信
所有博文
社区赞助商