Laravel6.0框架结构分析

Laravel为什么受欢迎?

Laravel有很多受欢迎的地方,其中大家说的最多的是Laravel优雅,在我看来Laravel的语法确实很优雅,但是我认为受欢迎不仅仅是因为优雅,还因为Laravel是一个服务组件化的框架。

开发模式

说到服务组件化设计我们就需要说一下开发模式的进化。

混编模式->前后端代码分离->MVC->MVCS->服务组件化设计

1、混编模式:PHP早期开发会把HTML和PHP都写在一个PHP脚本中来运行,这个阶段称之为混编。 缺点:代码混乱,不易于管理。

2、前后端代码分离:由于混编模式不易于管理前后代码,所以出现了前后端分离的做法,也就是把HTML+CSS+JS等这些代码和PHP接口单独分离出去,使用较多的是smarty模板。 缺点:每个项目通用的东西需要重复造轮子。

3、MVC:全名Model VIew Controller,即模型、视图、控制器的缩写,目前各大框架均是采用MVC模式。MVC并不是一种设计模式,可以简单理解为是一种业务框架的拆分方式。MVC是以观察者模式、策略模式、组合模式三种设计模式的合体,到了MVC这个时代以后项目层次已经比较明显易于管理了。 缺点:当业务足够多的时候,业务代码会写在Controller或Model中,假如项目中有三个端,pc、mobile、APP他们各自的登录对应个自己的Controller,假如需求有改动,维护起来成本太高、

4、MVCS:在MVC的基础上又添加了一个Service(业务服务层),MVCS将Controller只用于接收请求,处理参数,所有的业务都在Service中进行操作,Model层单纯的控制数据库操作,Service在这里主要用于业务的处理,已经数据的返回。 缺点:公司发展方向一直都在调整,也许会同时开多个项目,如果同时开多个项目,之前项目上一些工具类方法不能直接拿过来使用,cv大法有时候会丢失代码等。

5、服务组件化:当公司项目多的时候可以把和项目无关的一些工具进行封装,上传至composer中,下次在有别的项目使用的时候直接从composer中加载即可,Laravel就是一个组件化设计的框架,Laravel中所有的功能都是一个单独的组件,都可以在composer中找到。

laravel核心架构:

结合laravel文档,总结看下laravel框架的结构,laravel6.0中文文档地址:https://learnku.com/docs/laravel/6.x
文档中指出laravel的核心架构是请求周期、服务容器、服务提供者、Facades、契约。

服务容器(container):

本质为IOC容器,实际上是一个数组,当程序初始化的时候,会将所有会用到的类、函数注册到容器中,用于管理项目运行的服务,容器组件地址:vendor/laravel/framework/src/Illuminate/Container/。

服务提供者(providers ):

所有的服务提供者都会继承,注册一些实例对象到容器中,初始化组件,让laravel能够加载到这个组件。
Illuminate\Support\ServiceProvider 类,服务提供者就是指组件.

<?php

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class RiakServiceProvider extends ServiceProvider
{
    /**
     * 在服务容器里注册
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(Connection::class, function ($app) {
            return new Connection(config('riak'));
        });
    }
}
Facades(门面):

门面是为了使Laravel的语法更加优雅而出现的,正常在IOC中注册以后是可以通过$this->app('User')->add();这样来调用的,加入门面以后可以使用USER::add();是用法更加简单。

契约:

组件会不定期更新,组件升级以后如何保证方法一致?契约的主要作用是用来约束组件,为组件定义相应的规则。

Laravel流程:

解释:图中Controller可以直接使用$this->app('User')->add(); 流程图

鹿晓鹏博客
请先登录后发表评论
  • latest comments
  • 总共0条评论