似梦似醒

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用设计模式是为了,高内聚低耦合

耦合度是,如果代码都黏在一起了,牵一发而动全身,写代码不希望这样。经常需要改代码。尽可能的降低耦合度。

单例模式  配置类  session类 db类 缓存类

TP5.1  index.php  laravel也是这样的,原理一样的

loader 注册类,自动加载机制,记载composer 和 think的基础类 通过IOC容器绑定单例

然后通过Container 容器类,执行IOC容器类

 

 

 

 

 

 

 get方法,根据类名获取类,然后执行软方法

通过注册器,注册类。调用方法

 框架的核心内容就是容器

 

门面设计模式 

通过静态方法调用类的方法,__callstatic()

检查容器中是否有实例,如果有实例调用实例的方法,如果没有就通过容器的方式创建进行实例化,并调用。

 call_user_func_array()

把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。

总结

Facade-->获取对应的类库-->调用facade的callstatic方法--->createFacade调用容器,有容器调用。没有容器:创建,存储实例,调用实例类库的方法

 

框架执行流程

当一入口文件index.php

加载基类文件basre.php  

加载loader 文件,框架的灵魂。类的自动加载

不管什么框架第一步都是类的自动加载  spl_autoload_register

自身类加载think triaits  和 composer加载不同的文件加载

显示已加载所有的类,设置别名,并找到别名和类的映射关系

注册到注册树中去

然后在容器中获取app实例,并执行run方法。执行应用程序

初始化应用init 

监听app init

相关绑定

监听 app_dispatch

路由检测

记录当前调度信息

监听app_begin

执行路由调度

中间件调度

监听app_end

send();

 

posted on 2020-07-10 13:37  人生如梦,梦如人生  阅读(170)  评论(0编辑  收藏  举报