thinkphp笔记

一 自动加载loader

1.服务和扩展(类)的区别?
扩展是框架extend目录下的类,是使用sql_autoload_register自动加载,然后再里面引用vender下的 composer目录,和根目录下的 extend目录
服务直接是定义好的类(对象)直接添加到容器中当做服务使用

2.框架如何加载composer类的?

问题:如果直接把文件拖到composer的目录下,可能会报错;直接use 类名然后在控制器中调用会报错类不存在
方法:这时候需要在自动加载的文件中(每个框架都不一样)配置加载类的 目录和类的映射关系
原理:composer自动加载也是必须使用include 类文件 或者require 类文件的,只不过框架内部的自动加载文件已经封装好了,自己修改只需要添加类和文件的映射关系(数组)就行了 composer安装的包正常是因为composer require后自动加载文件已经composer工具被自动修改了

3.如何自定义自己的composer包?
下载composer软件包;执行composer init命令,生成一个composer.json文件,文件里面有"autoload":{“psr-4”:{“Qinii\”:“src/”} 很重要,表示命名空间和类文件所在目录的映射关系;然后新建一个src目录,里面写自己的类和方法,注意命名空间;git上传到github或者其他git服务器;登陆composer官网提交自己的扩展包 将包名和github地址check;

配置文件

1.\ArrayAccess 接口作用:访问数组的方式访问对象

2.使用parse_yml_file,parse_ini_file读取配置文件;在框架初始化的时候就开始加载config目录下的每个配置文件(通过工厂方式–>不同类名的同一个方法);

3.加载的配置放在框架加载时的内存中,所以有yaconf扩展直接存在于php的内寸中

容器

1.注册树 相当于实例化一个类,然后往数组中加入实例化后的对象,类似于数组;
配置文件赋值给一个config类的变量Config::get()方法为 使用单例模式创建一个对象,然后调用对象的get方法,配置文件中的内容 通过这个config类的一个成员变量 进行赋值,然后获取键值

2.反射:reflectionfunction::invoke(args[]) 直接执行reflectionfunction这个函数
\ReflectionClass \ReflectionFunction \ReflectionParameter

3.app(“config”)->get() 助手函数,里面封装了容器对象

4.__callstatic() 魔术方法 调用类中不存在的静态方法

5.门面模式:为容器中的(动态)类提供一个静态调用的接口

6.bind() bindTo() 把容器中的别名和实际的类进行绑定为一一对应的关系

7.门面模式基于容器

路由

  1. base里面注册异常处理机制
    注册psr4命名空间,初始化应用 创建容器实例static::$instance
    加载配置,加载公共函数,加载语言包,匹配路由规则

2.composer软件会自动生成一个autoload_psr4的classmap文件,框架从配置文件中读取配置然后require类文件

3.路由文件中的Route::get()也是调用容器中的Route文件,如果Route类不存在,从门面模式中查找,然后实例化后加入容器再调用get方法,和config::get类似

4.解析url放到 t h i s − > r u l e [ ] 变 量 中 , 然 后 根 据 生 产 的 r u l e 数 组 生 成 一 个 d i s p a t c h 对 象 , d i s p a t c h 中 根 据 this->rule[]变量中,然后根据生产的rule数组生成一个dispatch对象,dispatch中根据 this>rule[]ruledispatch,dispatchthis->rule解析有控制器,方法等变量后的Moudle对象

5.$this->request 通过app继承容器 的make方法new一个requrest对象,像数组一样使用对象

6.路由通过循环遍历route.php文件中的规则进行正则匹配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值