php框架分层模型

一、4种php分层模型架构

架构 说明
3层架构(MVC): 视图层,模型层,控制器层。
4层架构: 视图层,模型层,服务层,控制器层。服务层通过依赖注入的方式将控制反转,能实现扩展和重用。
5层架构: 视图层,模型层,存储层,服务层,控制器层。存储层存放数据修改/获取逻辑。让模型只负责模型定义,让多个程序员工作在不同的层上。
AOP(面向切面编程): 把一些需要做但不是每个业务都要做的东西放到这里去做,如中间件、过滤器、拦截器、事件通知、观察者都算是这种切面的实现。

以laravel框架为例的切面编程:

第三方类库 放在Serices和Helpers里
服务提供器 放在Providers里
动态调用 放在Factories和Interfaces里
避免基类膨胀的多类共有特性 放在Traits里
中间件

放在与Controllers同级的Middles里

任务

放在Jobs里 

异常

放在Exceptions里 

           图1、3层架构(MVC)

               图2、4层架构

             图3、5层架构

          图4、AOP(面向切面编程)

1、3层架构(MVC):这种分层模型使用时通过一个入口文件启动框架服务,注册一些框架依赖,然后通过路由分发将请求分发到各个控制器里去,一般逻辑写在控制器层,模型层做数据处理,视图层负责展现。

2、4层架构:随着项目变大,协作人数变多,这种分层会不太能适应需求,那么我们可以通过增加分层来解决问题。我们在模型层和控制器层中增加服务层,通过依赖注入的方式将控制反转,能解决扩展和重用的问题

3、5层架构:但随着项目继续扩大,我们又要增加一层。将数据修改获取逻辑放到储藏库层,模型只负责模型定义,这样多个程序员就可以工作在不同的层上。

4、AOP(面向切面编程):理论上我们可以无限分层,不断的拆分将业务分层拆的更细。但是有的场景中我们需要做一些操作其实不能很好的分层,因为有的业务可能用到,有的业务可能不会用到,同时由于分层我们制造了许多组件和分层之间的依赖,在这样的系统中面向对象设计和编码变的重要。此时引进了一个新的概念 AOP ,既面向切面编程。上图4的蓝色就是切面,面向切面编程,这种编程方法就是在需要的地方实现一个切面,把一些需要做但不是每个业务都要做的东西放到这里去做,如中间件、过滤器、拦截器、事件通知、观察者都算是这种切面的实现之一。

二、AOP(面向切面编程)的一些碎碎念

比如中间件middle的详见: Laravel中间件,管道之面向切面编程,其他核心也可在此文章的正文中找原理:深入理解Laravel核心

php artisan 可以看到所有的命令;看make那栏。

make:auth Scaffold basic login and registration views and routes

make:channel Create a new channel class

make:command Create a new Artisan command

make:controller Create a new controller class

make:event Create a new event class

make:exception Create a new custom exception class

make:factory Create a new model factory

make:job Create a new job class

make:listener Create a new event listener class

make:mail Create a new email class

make:middleware Create a new middleware class

make:migration Create a new migration file

make:model Create a new Eloquent model class

make:notification Create a new notification class

make:observer Create a new observer class

make:policy Create a new policy class

make:provider Create a new service provider class

make:request Create a new form request class

make:resource Create a new resource

make:rule Create a new validation rule

make:seeder Create a new seeder class

make:test Create a new test class

执行php artisan make:middleware,会自动生成app/Http/Middleware文件夹。

比如执行php artisan make:test,会在与app同级地方生成tests文件夹。

比如执行php artisan make:provider(exception/factory/job/event/listener)等,会自动生成app/Providers(/Exceptions/Factories/Jobs/Events/Listeners)文件夹。

其中,事件是一种常见的观察者模式的应用。简单的来说,当 (event)... 干 (listener)...,一步操作:php artisan event:generate同时生成app/Events和app/Listeners两个文件夹。详细使用见:https://learnku.com/articles/20712

猜你喜欢

转载自blog.csdn.net/wuhuagu_wuhuaguo/article/details/105435718
今日推荐