路由是应用开发中比较关键的一个环节,其主要作用包括但不限于:让URL更规范以及优雅;隐式传入额外请求参数;统一拦截并进行权限检查等操作;绑定请求数据;使用请求缓存;路由中间件支持;路由解析的过程一般包含:路由定义:完成路由规则的定义和参数设置;路由检测:检查当前的URL请求是否有匹配的路由;路由解析:解析当前路由实际对应的操作(方法或闭包);路由调度:执行路由解析的结果调度;掌握路由主要是要...
新版的事件系统可以看成是5.1版本行为系统的升级版,事件系统相比行为系统强大的地方在于事件本身可以是一个类,并且可以更好的支持事件订阅者。事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,也降低了BUG的可能性。...
中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。新版部分核心功能使用中间件处理,你可以灵活关闭。包括Session功能、请求缓存和多语言功能。定义中间件可以通过命令行指令快速生成中间件php think make:middleware Check这个指令会 app/middleware目录下面生成一个Check中间件。<?php
namespace app\midd...
门面(Facade)门面为容器中的(动态)类提供了一个静态调用接口,相比于传统的静态方法调用, 带来了更好的可测试性和扩展性,你可以为任何的非静态类库定义一个facade类。[info] 系统已经为大部分核心类库定义了Facade,所以你可以通过Facade来访问这些系统类,当然也可以为你的应用类库添加静态代理。下面是一个示例,假如我们定义了一个app\common\Test类,里面有一个h...
系统服务系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制(如果继承think\Service的话可以直接调用this->app获取应用实例)。你可以在系统服务中注册一个对象到容器,或者对某些对象进行相关的依赖注入。由于系统服务的执行优先级问题,可以确保相关组件在执行的时候已经完成相关依赖注入。服...