05 2017 档案
摘要:参数绑定是通过直接绑定URL地址中的变量作为操作方法的参数,可以简化方法的定义甚至路由的解析。 参数绑定功能默认是开启的,其原理是把URL中的参数(不包括模块、控制器和操作名)和操作方法中的参数进行绑定。 要启用参数绑定功能,首先确保你开启了URL_PARAMS_BIND设置: 按变量名绑定 默认的
阅读全文
摘要:前置和后置操作指的是在执行某个操作方法之前和之后会自动调用的方法,不过仅对访问控制器有效。 其他的分层控制器层和内部调用控制器的情况下前置和后置操作是无效的。 系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的定义方式如下: 如果我们访问 http://server
阅读全文
摘要:一般来说,ThinkPHP的控制器是一个类,而操作则是控制器类的一个公共方法。 下面就是一个典型的控制器类的定义: Home\IndexController类就代表了Home模块下的Index控制器,而hello操作就是Home\IndexController类的hello(公共)方法。 当访问 h
阅读全文
摘要:假设我们定义了News控制器如下(代码实现仅供参考): 定义路由规则如下: 然后,我们访问: http://serverName/index.php/Home/new/8 会匹配到第一个路由规则,实际执行的效果等效于访问: http://serverName/index.php/Home/News/
阅读全文
摘要:闭包定义 我们可以使用闭包的方式定义一些特殊需求的路由,而不需要执行控制器的操作方法了,例如: 参数传递 闭包定义的参数传递在规则路由和正则路由的两种情况下有所区别。 规则路由的参数传递比较简单: 规则路由中定义的动态变量的名称 就是闭包函数中的参数名称,不分次序。 因此,如果我们访问的URL地址是
阅读全文
摘要:静态路由其实属于规则路由的静态简化版(又称为URL映射),路由定义中不包含动态参数,静态路由不需要遍历路由规则而是直接定位,因此效率较高,但作用也有限。 如果我们定义了下面的静态路由 注意:为了不影响动态路由的遍历效率,静态路由采用URL_MAP_RULES定义和动态路由区分开来 定义之后,如果我们
阅读全文
摘要:正则路由也就是采用正则表达式定义路由的一种方式,依靠强大的正则表达式,能够定义更灵活的路由规则。 路由表达式支持的正则定义必须以“/”开头,否则就视为规则表达式。也就是说如果采用: 方式定义的正则表达式不会被支持,而会被认为是规则表达式进行解析,从而无法正确匹配。 下面是一种正确的正则路由定义: 对
阅读全文
摘要:规则路由 规则路由是一种比较容易理解的路由定义方式,采用ThinkPHP设计的规则表达式来定义。 规则表达式 规则表达式通常包含静态地址和动态地址,或者两种地址的结合,例如下面都属于有效的规则表达式: 规则表达式的定义始终以“/”为参数分割符,不受URL_PATHINFO_DEPR设置的影响 每个参
阅读全文
摘要:一、启用路由 要使用路由功能,前提是你的URL支持PATH_INFO(或者兼容URL模式也可以,采用普通URL模式的情况下不支持路由功能),并且在应用(或者模块)配置文件中开启路由: 3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中。 3.2.3版
阅读全文
摘要:我们来系统的了解下ThinkPHP框架开发的应用的标准执行流程:
阅读全文
摘要:应用编译机制作为ThinkPHP独创的功能特色,从1.0版本就延续至今,3.2版本的编译机制更加具有特色。 一、应用编译缓存 编译缓存的基础原理是第一次运行的时候把核心需要加载的文件去掉空白和注释后合并到一个文件中,第二次运行的时候就直接载入编译缓存而无需载入众多的核心文件。当第二次执行的时候就会根
阅读全文
摘要:3.2版本的应用模式可以替代之前的引擎扩展和模式扩展,支持应用模式定义。 每个应用模式有自己的定义文件,用于配置当前模式需要加载的核心文件和配置文件,以及别名定义、行为扩展定义等等。除了模式定义外,应用自身也可以独立定义模式文件。 如果应用模式涉及到不同的存储类型,例如采用分布式存储等,就需要另外设
阅读全文
摘要:在3.2中,基本上无需手动加载类库文件,你可以很方便的完成自动加载 一、命名空间自动加载 系统可以通过类的命名空间自动定位到类库文件,例如: 我们定义了一个类 Org\Util\Auth 类: 保存到ThinkPHP/ Library/Org/Util/Auth.class.php。 接下来就是实例
阅读全文
摘要:3.2版本全面采用命名空间方式定义和加载类库文件,有效的解决多个模块之间的冲突问题,并且实现了更加高效的类库自动加载机制。 命名空间的概念必须了解,否则会成为3.2版本开发的重大障碍。如果不清楚什么是命名空间,可以参考PHP手册:PHP命名空间 由于新版完全采用了命名空间的特性,因此只需要给类库正确
阅读全文
摘要:ThinkPHP从3.0版本开始引入了全新的CBD(核心Core+行为Behavior+驱动Driver)架构模式,因为从底层开始,框架就采用核心+行为+驱动的架构体系,核心保留了最关键的部分,并在重要位置设置了标签用以标记,其他功能都采用行为扩展和驱动的方式组合,开发人员可以根据自己的需要,对某个
阅读全文
摘要:ThinkPHP基于MVC(Model-View-Controller,模型-视图-控制器)模式,并且均支持多层(multi-Layer)设计。 一、模型层(MODEL) 默认的模型层由Model类构成,但是随着项目的增大和业务体系的复杂化,单一的模型层很难解决要求,从3.1开始推出了多层Model
阅读全文
摘要:入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作: 这是3.2版本的标准URL格式。 可以通过设置模块绑定或者域名部署等方式简化URL地址中的模块及控制器名称。 一、URL大小写 ThinkPHP框架的URL是区分大小写(主要是针对
阅读全文
摘要:一、模块化设计 一个完整的ThinkPHP应用基于 模块/控制器/操作 设计,并且,如果有需要的话,可以支持多入口文件和多级控制器 ThinkPHP3.2采用模块化的架构设计思想,对目录结构做了调整,可以支持多模块应用的创建,让应用的拓展更加方便。 一个典型的URL访问规则(默认URL规则是PATH
阅读全文
摘要:一、配置格式 Thinkphp框架中的所有配置都是数组形式定义的的格式为: 配置参数不区分大小写(无论大小写都会被转换成小写),但是还是建议保持大写的配置格式 还可以配置文件中使用二维数组的模式来配置: 注意:二级配置是区分大小写的,读取时请保持一致 其他格式配置 3.2.2版本开始,配置文件增加y
阅读全文

浙公网安备 33010602011771号