一.目录结构.
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─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 命令行入口文件
public目录
是 WEB部署目录
(对外访问目录),public目录
下的index.php
是应用入口文件也是是网站唯一的入口,所有内容的访问都是通过这个文件来实现的。
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
二.配置.
-
基本配置.
-
数据库配置.
二.路由.
1.路由的作用.
路由的作用就是把真实的url地址藏起来,把url的请求优雅的对应到你想要执行的操作方法。如:
如果不使用路由方式:
www.tp5.com/index/Hello/sayHello
这种方式不仅冗余而且把项目结构暴露出去了.
所以我们要使用路由来优化.
2.路由的定义
在application目录中的route.php中进行定义.
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
Route::rule('api/sample/:key','api/:version.Sample/getSample');
对上一节的url进行优化:
现在就访问地址就变成了:
www.tp5.com/hello
系统提供了为不同的请求类型定义路由规则的简化方法,例如:
2.路由的参数.
例如:
路由为:
通过如下url
www.tp5.com/hello/thinkphp5
如果该参数为可选变量则需要用[]将参数括起来.
通过一下url可以访问:
www.tp5.com/hello/thinkphp5
或
www.tp5.com/hello
3.路由分组.
路由分组功能允许把相同前缀的路由定义合并分组,这样可以提高路由匹配的效率,不必每次都去遍历完整的路由规则。
例如:
Route::get('api/:amin/rigster', 'api/:version.Admin/rigster');
Route::get('api/:amin/login', 'api/:version.Admion/rigster');
可以优化成:
Route::group('api/:amin', function () {
Route::get('/rigster', 'api/:version.Admin/rigster');
Route::get('/login', 'api/:version.Admion/rigster');
});
三.控制器及视图模板.
1.模板的定义.
URL解析和路由后,会把当前的URL地址解析到 [ 模块/控制器/操作 ],其实也就是执行某个控制器类的某个操作方法(新版的控制器可以不需要继承任何基类).
如:
或者:
2.渲染模板和输出.
1.继承系统控制器类
return $this->fetch(可选参数1,可选参数2,可选参数3,可选参数4);
可选参数1(字符串):模板文件(不带任何参数 自动定位当前操作的模板文件 )
可选参数2(数组):模板变量(数组)
2.使用助手函数
return view();
参数与fetch相同
3.使用view类(不建议使用)
$view=new View();
return $view->fetch();
3.模板赋值.
assign方法
例如:传入name值到模板中去.
assign("name", "thinkphp");
// 或者批量赋值
/* $this->assign([
'name' => 'ThinkPHP',
'email' => '[email protected]'
]);*/
return $this->fetch();//渲染模板
}
}
在模板页面中接受控制器传入的值
页面赋值
{$name}