详细开发文档参考 ThinkPHP5完全开发手册
- 函数的命名
- 配置参数
- 常量(大写)
- 数据表和字段
- 属性的命名
- 方法的命名
- 类名
- 类文件名
- 类的命名
命名空间与目录路径对应。
如:路径位置为:application/index/controller/Index.php
其文件的命名空间应为:app\index\controller
命名空间解释:
app
对应application
目录(在入口文件mypro/public/index.php
中定义的,可根据需求自定义修改)index
对应index
模块controller
对应控制器
位置
类名直接使用该控制器名即可,不需要用Controller结尾
如:当前控制器类为
User
控制器,则直接定义该类名为User
即可。
TP5的路由访问方式采用PATH_INFO
进行地址访问,不再支持普通模式的URL访问。
如果定义了在index
模块的index
控制器中定义了方法名为test
的方法,那么在浏览器中的访问url应为
http://mypro.com/index.php/index/index/test
(此处将项目名配置了虚拟域名mypro.com
)
数据库默认的相关配置在项目的application\database.php
中已经定义好。
只需要在模块的数据库配置文件中配置好当前模块需要连接的数据库的配置参数即可。
模块的数据库配置文件的路径为:
application/index/database.php
配置参数 如:数据库名称和端口号
return [
// 数据库名
'database' => 'test',
// 端口
'hostport' => 3306
];
打印config('database')
即可查看所有配置
3、连接数据库
$res = Db::connect();
注意:
- 需要在文件头引入
Db
类。引入方式为:use think\Db;
- TP5是憜性加载,即此时虽然已经可以查看到连接数据库的参数信息,但即使配置参数有问题(如数据库不存在)时不会有错误提示。
(1)运行原生SQL语句
支持参数绑定
Db::query('select * from think_user where id=?',[8]);
支持命名占位符绑定
Db::query('select * from think_user where id=:id',['id'=>8]);
支持多个数据库连接
Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);
(2)查询构造器
- 查询一条数据(结果不存在时,返回null)
Db::table('think_user')->where('status',1)->find();
【定义了数据表前缀】
Db::name('user')->where('status',1)->find();
【助手函数:默认每次都会重新连接数据库】
db('user')->where('status',1)->find();
【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
db('user',[],false)->where('status',1)->find(); 【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
【使用查询对象进行查询】
$query = new \think\db\Query();
$query->table('think_user')->where('status',1);
Db::find($query);
【直接使用闭包函数】
Db::find(function($query){
$query->table('think_user')->where('status',1);
});
- 查询多条数据(结果不存在时,返回空数组)
Db::table('think_user')->where('status',1)->select();
【定义了数据表前缀】
Db::name('user')->where('status',1)->select();
【助手函数:默认每次都会重新连接数据库】
db('user')->where('status',1)->select();
【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
db('user',[],false)->where('status',1)->select(); 【助手函数:使用第三个参数进行单例化,使得每次使用不再重新连接数据库】
【使用查询对象进行查询】
$query = new \think\db\Query();
$query->table('think_user')->where('status',1);
Db::select($query);
【直接使用闭包函数】
Db::select(function($query){
$query->table('think_user')->where('status',1);
});
- 查询某个字段的值
Db::table('think_user')->where('id',1)->value('name');
- 查询某一列的值
Db::table('think_user')->where('status',1)->column('name');
-
数据集分批处理
-
JSON类型数据查询
- 添加一条数据
insert()
----添加成功返回1
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::table('think_user')->insert($data);
- 添加多条数据
insertAll()
----添加成功返回添加成功的记录条数
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
*助手函数
// 添加单条数据
db('user')->insert($data);
// 添加多条数据
db('user')->insertAll($list);
*快捷更新(V5.0.5+)
Db::table('data')
->data(['name'=>'tp','score'=>1000])
->insert();
$view = new View();
return $view->fetch();
此时默认访问的模板路径为:[模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html
$view = new View();
return $view->fetch('add');
此时访问的模板路径为:[模板文件目录]/当前控制器名(小写+下划线)/add.html
$view = new View();
return $view->fetch('user/add');
此时访问的模板路径为:[模板文件目录]/user/add.html
$view = new View();
return $view->fetch('admin@user/add');
$view = new View();
return $view->fetch(APP_PATH.request()->module().'/view/public/header.html');
(基础模板路径:mypro/application/index/view/index/base.html
)
在基础模板中定义好需要设置的子模板名称。
子模板定义方式:
<block name="子模板名称1">这是默认显示的内容</block>
(子模板路径:mypro/application/index/view/index/index.html
)
引入方式:
{extend name="index/base" /}
注:name
是相对于application
开始的
定义方式:
<block name="子模板名称1">这是自定义该子模板需要显示的内容</block>
{$c.create_time|date="Y-m-d H:i:s",###}