thinkphp5概念

/ 0评 / 0

一、什么是thinkphp

thinkphp是一个国内的开源web框架,经过很多年的发展,现在已经到了5的时代。
web框架主要是负责协调各组件进行工作,定义规范,提供一体化解决方案。
thinkphp能够做web框架应该做的事情,比如:个性化路由、模板引擎、缓存机制、插件机制、角色认证、安全防范、数据库ORM

二、thinkphp安装

之前的版本主要采用下载文件夹安装的方法,而5依然可以使用这种方法,也引入了更为先进的包管理工具composer进行安装
在之前的文章中介绍过composer的安装、配置国内镜像和使用,这里直接介绍创建thinkphp5的命令

composer create-project topthink/think tp5.0

可以使用以下命令安装三方依赖库,而三方依赖可以在 https://packagist.org/ 查到

composer require monolog/monolog 1.23.0

三、thinkphp5的特性及目录结构

thinkphp5的PHP版本要求提升到5.4,是ThinkPHP突破原有框架思路的颠覆之作,主要特性包括:基于命名空间和众多PHP新特性、核心功能组件化、强化路由功能、更灵活的控制器、重构的模型和数据库类、配置文件可分离、重写的自动验证和完成、简化扩展机制、API支持完善、改进的Log类、命令行访问支持、REST支持、引导文件支持、方便的自动生成定义、真正惰性加载、分布式环境支持、更多的社交类库

目录结构

www  WEB部署目录(或者子目录)
├─application           应用目录
│  ├─common             公共模块目录(可以更改)
│  ├─module_name        模块目录
│  │  ├─config.php      模块配置文件
│  │  ├─common.php      模块函数文件
│  │  ├─controller      控制器目录
│  │  ├─model           模型目录
│  │  ├─view            视图目录
│  │  └─ ...            更多类库目录
│  │
│  ├─command.php        命令行工具配置文件
│  ├─common.php         公共函数文件
│  ├─config.php         公共配置文件
│  ├─route.php          路由配置文件
│  ├─tags.php           应用行为扩展定义文件
│  └─database.php       数据库配置文件
│
├─public                WEB目录(对外访问目录)
│  ├─index.php          入口文件
│  ├─router.php         快速测试文件
│  └─.htaccess          用于apache的重写
│
├─thinkphp              框架系统目录
│  ├─lang               语言文件目录
│  ├─library            框架类库目录
│  │  ├─think           Think类库包目录
│  │  └─traits          系统Trait目录
│  │
│  ├─tpl                系统模板目录
│  ├─base.php           基础定义文件
│  ├─console.php        控制台入口文件
│  ├─convention.php     框架惯例配置文件
│  ├─helper.php         助手函数文件
│  ├─phpunit.xml        phpunit配置文件
│  └─start.php          框架入口文件
│
├─extend                扩展类库目录
├─runtime               应用的运行时目录(可写,可定制)
├─vendor                第三方类库目录(Composer依赖库)
├─build.php             自动生成定义文件(参考)
├─composer.json         composer 定义文件
├─LICENSE.txt           授权说明文件
├─README.md             README 文件
├─think                 命令行入口文件

四、thinkphp5命名规范

ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意以下命名规范:

目录不强制规范,驼峰和小写+下划线模式均支持;
类库、函数文件统一以`.php`为后缀;
类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
类名和类文件名保持一致,统一采用驼峰法命名(首字母大写);
函数和类、属性命名

类的命名采用驼峰法,并且首字母大写,例如 `User`、`UserType`,默认不需要添加后缀,例如`UserController`应该直接命名为`User`;
函数的命名使用小写字母和下划线(小写字母开头)的方式,例如 `get_client_ip`;
方法的命名使用驼峰法,并且首字母小写,例如 `getUserName`;
属性的命名使用驼峰法,并且首字母小写,例如 `tableName`、`instance`;
以双下划线“__”打头的函数或方法作为魔法方法,例如 `__call` 和 `__autoload`;
常量和配置

常量以大写字母和下划线命名,例如 `APP_PATH`和 `THINK_PATH`;
配置参数以小写字母和下划线命名,例如 `url_route_on` 和`url_convert`;
数据表和字段

数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如 `think_user` 表和 `user_name`字段,不建议使用驼峰和中文作为数据表字段命名。

五、thinkphp5的生命周期

1、入口文件
虚拟主机目录/public/index.php
2、引入启动文件
虚拟主机目录/thinkphp/start.php
3、运行App下面的run方法
虚拟主机目录/thinkphp/library/think/App.php -> run() #69
4、实例化$request对象
虚拟主机目录/thinkphp/library/think/App.php -> Request::instance(); #72
5、进行路由检测
虚拟主机目录/thinkphp/library/think/App.php -> self::routeCheck($request, $config); #107
6、执行exec方法
虚拟主机目录/thinkphp/library/think/App.php -> self::exec($dispatch, $config); #291
7、根据dispatch数组里面的type类型打开相对应的控制器
虚拟主机目录/thinkphp/library/think/App.php -> self::module($result, $config, $convert = null); #334
8、调用Loader::controller通过反射机制加载控制器对象
虚拟主机目录/thinkphp/library/think/App.php -> Loader::controller(...); #402
9、调用请求方法invokeMethod($method, $vars = [])
虚拟主机目录/thinkphp/library/think/App.php -> self::invokeMethod(...); #187
10、调用$response对象中的send方法把数据输出浏览器中
虚拟主机目录/thinkphp/library/think/Response.php -> send(); #92

评论已关闭。