composer create-project topthink/think=5.0.* tp5 --prefer-dist
首先克隆下载应用项目仓库php
git clone https://github.com/top-think/think tp5
而后切换到tp5目录下面,再克隆核心框架仓库:css
git clone https://github.com/top-think/framework thinkphp
浏览器中输入访问地址(tp5与laravel5.6相同,项目访问目录为/public)前端
http://localhost/tp5/public/
project 应用部署目录 ├─application 应用目录(可设置) │ ├─common 公共模块目录(可更改) │ ├─index 模块目录(可更改)一个典型的应用是由多个模块组成的,这些模块一般都是应用目录下面的一个子目录,每一个模块都有本身独立的配置文件、公共文件和类库文件。 │ │ ├─config.php 模块配置文件 │ │ ├─common.php 模块函数文件 │ │ ├─controller 控制器目录(5.0的控制器类比较灵活,能够无需继承任何基础类库,控制器主要负责请求的接收,并调用相关的模型处理,并最终经过视图输出。严格来讲,控制器不该该过多的介入业务逻辑处理) │ │ ├─model 模型目录(型类一般完成实际的业务逻辑和数据封装,并返回和格式无关的数据,模型类并不必定要访问数据库,并且在5.0的架构设计中,只有进行实际的数据库查询操做的时候,才会进行数据库的链接,是真正的惰性链接) │ │ ├─view 视图目录(控制器调用模型类后返回的数据经过视图组装成不一样格式的输出。视图根据不一样的需求,来决定调用模板引擎进行内容解析后输出仍是直接输出。视图一般会有一系列的模板文件对应不一样的控制器和操做方法,而且支持动态设置模板目录) │ │ └─ ... 更多类库目录 │ ├─command.php 命令行工具配置文件 │ ├─common.php 应用公共(函数)文件 │ ├─config.php 应用(公共)配置文件 │ ├─database.php 数据库配置文件 │ ├─tags.php 应用行为扩展定义文件 │ └─route.php 路由配置文件 ├─extend 扩展类库目录(可定义) ├─public WEB 部署目录(对外访问目录) │ ├─static 静态资源存放目录(css,js,image) │ ├─index.php 应用入口文件 │ ├─router.php 快速测试文件 │ └─.htaccess 用于 apache 的重写 ├─runtime 应用的运行时目录(可写,可设置) ├─vendor 第三方类库目录(Composer) ├─thinkphp 框架系统目录 │ ├─lang 语言包目录 │ ├─library 框架核心类库目录 │ │ ├─think Think 类库包目录 │ │ └─traits 系统 Traits 目录 │ ├─tpl 系统模板目录 │ ├─.htaccess 用于 apache 的重写 │ ├─.travis.yml CI 定义文件 │ ├─base.php 基础定义文件 │ ├─composer.json composer 定义文件 │ ├─console.php 控制台入口文件 │ ├─convention.php 惯例配置文件 │ ├─helper.php 助手函数文件(可选) │ ├─LICENSE.txt 受权说明文件 │ ├─phpunit.xml 单元测试配置文件 │ ├─README.md README 文件 │ └─start.php 框架引导文件 ├─build.php 自动生成定义文件(参考) ├─composer.json composer 定义文件 ├─LICENSE.txt 受权说明文件 ├─README.md README 文件 ├─think 命令行入口文件
// 定义应用目录 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php';
引导文件:依次执行下面操做 ,加载系统常量定义;加载环境变量定义文件;注册自动加载机制;注册错误和异常处理机制;加载惯例配置文件;执行应用;laravel
注册自动加载:系统会调用 Loader::register()方法注册自动加载,在这一步完成后,全部符合规范的类库(包括Composer依赖加载的第三方类库)都将自动加载git
应用结束github
在没有开启路由时,访问路由的方式以下:web
http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操做/[参数名/参数值...] >php.exe index.php(或者其它应用入口文件) 模块/控制器/操做/[参数名/参数值...]
URL大小写thinkphp
默认状况,url不区分大小写,也就是说URL里面的模块/控制器/操做名会自动转换为小写,控制器在最后调用的时候会转换为驼峰法处理。数据库
// URL不区分大小写状况下,若是要访问驼峰法的控制器类,则须要使用: http://localhost/index.php/Index/blog_test/read // 模块名和操做名会直接转换为小写处理。
若是但愿URL访问严格区分大小写,能够在应用配置文件中设置:apache
// 关闭URL中控制器和操做名的自动转换 'url_convert' => false, //一旦关闭自动转换,URL地址中的控制器名就变成大小写敏感了,例如前面的访问地址就要写成: http://localhost/index.php/Index/BlogTest/read //可是下面的URL访问依然是有效的: http://localhost/index.php/Index/blog_test/read //下面的URL访问则无效: http://localhost/index.php/Index/blogtest/read //须要注意:路由规则中定义的路由地址是按照控制器名的实际名称定义(区分大小写)。
'default_return_type'=>'json' // 方法中直接return 便可 public function index() { $data = ['name'=>'thinkphp','url'=>'thinkphp.cn']; return ['data'=>$data,'code'=>1,'message'=>'操做完成']; } // 返回前端数据则为: {"data":{"name":"thinkphp","url":"thinkphp.cn"},"code":1,"message":"\u64cd\u4f5c\u5b8c\u6210"}
// 若是须要指定数据类型返回则只须要再控制器中修改对应类型便可(核心支持的数据类型包括view、xml、json和jsonp,其余类型的须要本身扩展。),以下: public function index() { $data = ['name'=>'thinkphp','url'=>'thinkphp.cn']; // 指定json数据输出 // return json(['data'=>$data,'code'=>1,'message'=>'操做完成']); // 指定xml数据输出 return xml(['data'=>$data,'code'=>1,'message'=>'操做完成']); }
因为API开发不方便在客户端进行开发调试,但ThinkPHP5的Trace调试功能支持Socket在内的方式,能够实现远程的开发调试。
'app_trace' => true, 'trace' => [ 'type' => 'socket', // socket服务器 'host' => 'slog.thinkphp.cn', ],