• 框架执行顺序


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

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

    单例模式  配置类  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();

  • 相关阅读:
    regasm.exe程序集注册工具
    C#获取CPU温度
    检测已连接显示器
    防火墙规则修改
    WPF中播放声音
    python获取火狐浏览器的历史记录
    python学习-[小甲鱼]零基础入门教学
    推荐一些常用感觉不错的jQuery插件
    HTML5本地存储 Web Storage
    Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。
  • 原文地址:https://www.cnblogs.com/zhaoyang-1989/p/13277081.html
Copyright © 2020-2023  润新知