ThinkPHP简介
ThinkPHP框架可以方便、快捷地进行项目开发和部署应用,而且不仅是企业级应用,任何PHP应用开发都可以从ThinkPHP的简单和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导“大道至简,开发由我”的开发理念,用最少的代码完成更多的功能,其宗旨就是让Web应用开发更简单、更快速。
ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,有多个版本。
主要新特性主要新特性如下:
☑ 采用PHP7强类型(严格模式)。
☑ 支持更多的PSR规范。
☑ 多应用支持。
☑ ORM组件独立。
☑ 改进的中间件机制。
☑ 更强大和易用的查询。
☑ 全新的事件系统。
☑ 支持容器invoke回调。
☑ 模板引擎组件独立。
☑ 内部功能中间件化。
☑ SESSION机制改进。
☑ 缓存及日志支持多通道。
☑ 引入Filesystem组件。
☑ 对Swoole以及协程支持改进。
☑ 对IDE更加友好。
☑ 统一和精简大量用法。
ThinkPHP基础
资源包ThinkPHP遵循简洁实用的设计原则,兼顾开发速度和执行速度的同时,也注重易用性。
- MVC设计模式
MVC是一种经典的程序设计理念,此模式将应用程序分为3个部分:模型层(Model)、视图层(View)和控制层(Controller)。MVC是这3个部分英文字母的缩写。
说明
MVC设计模式产生的原因:应用程序中用来完成任务的代码——模型层(也叫业务逻辑层),通常是程序中相对稳定的部分,重用率高;而与用户交互的界面——视图层,却经常改变。如果因需求变动而不得不对业务逻辑代码修改,或者要在不同的模块中应用相同的功能而重复地编写业务逻辑代码,不仅会降低整体开发的进度,也会使未来的维护变得非常困难。因此,将业务逻辑代码与外观界面分离,可更方便地根据需求改进程序,这就是MVC设计模式。
- 入口文件
用户请求的PHP文件,负责处理一个请求(注意,不一定是URL请求)的生命周期。入口文件位于public目录下面,最常见的入口文件就是index.php。 - 应用
ThinkPHP 每个应用都是一个app目录的子目录(或者指定的composer库),每个应用都具有独立的路由、配置,以及MVC相关文件。这些应用可以公用框架核心以及扩展,而且可以支持composer应用加载。 - 路由
路由用于规划(同时也会进行简化)请求的访问地址,在访问地址和实际操作方法之间建立一个路由规则,映射路由地址间的关系。
ThinkPHP并不强制使用路由。如果没有定义路由,可以直接使用“控制器/操作”的方式进行访问。如果定义了路由,则该路由对应的路由地址就不能直接访问了。一旦开启强制路由参数,就必须为每个请求定义路由(包括首页)。
使用路由有一定的性能损失,但随之也会更加安全。因为每个路由都有自己的生效条件,如果请求不满足条件,将会被过滤掉。这远比用户在控制器操作中进行各种判断要实用得多。路由的作用不只是规范URL,还可以实现验证、权限、参数绑定及响应设置等功能。 - 容器
ThinkPHP使用(对象)容器统一管理对象实例及依赖注入。容器类的工作由think\Container类完成,但大多数情况下都是通过应用类(think\App类)或是app助手函数来完成容器操作。可以为容器中的对象实例绑定一个对象标识,如果没有绑定则使用类名作为容器标识。 - 系统服务
系统服务的概念是指在执行框架的某些组件或者功能的时候需要依赖的一些基础服务,服务类通常可以继承系统的think\Service类,但并不强制。可以在系统服务中向容器中注册一个对象,或者对某些对象进行相关的依赖注入。由于系统服务的执行优先级问题,可以确保相关组件在执行的时候已经完成相关依赖注入。 - 控制器
每个应用都拥有独立的类库及配置文件,一个应用下面有多个控制器负责响应请求。控制器其实就是一个独立的控制器类,主要负责请求的接收,并调用相关的模型处理,最终通过视图输出。严格来说,控制器不应该过多地介入业务逻辑处理。