tp5.1学习笔记1
[TOC]
安装
composer create-project topthink/think tp5
配置文件:
默认配置都在app.php配置文件,并且配置参数区分大小写
两种层级的配置:
应用配置目录 config
模块配置目录 application/module/config
以上两种配置,只能有一种生效。如果模块module下面有config配置,那么此模块,应用此配置。全局配置失效。
快速入门
控制器
默认继承controller。访问:http://localhost/tp/public/index.php/index/index/index 其中,index.php后面,模→控→操
命名空间:app\index\controller 除了app是缩写,其他都代表真实的路径。
<?php namespace app\index\controller; use \think\Controller; class Index extends Controller { public function index() { return '<h1>Hello world</h1>'; } public function hello($name = 'ThinkPHP5') { return 'hello,' . $name; } public function test(){ echo \json_encode(['age'=>123,'name'=>'']); } public function test1(){ $data = ['age'=>123,'name'=>'wangduoduo']; return xml($data);//或json } }提交的参数:
$this->request 对象。 $this->request->param('name') $this->request->get('name') //进行了区分。 $data = $this->request->param();//返回所有的提交数据返回数据:
return json($data); 注意: 如果是使用了助手函数,请return。如果echo,则会报错。因为框架,会根据控制器的返回,进行处理。
常见的助手函数,json/xml等。
配置连数据库等
数据库的配置 application/config/database.php 简单的更新如下的几个配置即可。
'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'test', // 用户名 'username' => 'root', // 密码 'password' => 'root',
测试表:
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
`sex` int(1) DEFAULT NULL,
`age` tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
测试查询数据
use \think\Db; //导入类
//返回查询数据
public function index(){
$data = Db::connect()
->table('user')
->select();
return json($data);
}
备注:查询find 跟select的区别,find即findOne,而select 是取出所有匹配的结果集。官方文档如此备注:默认情况下,find和select方法返回的都是数组,区别在于后者是二维数组。
添加数据:
public function add(){
$data = $this->request->param();
// Db::name('user')->insert($data); //方式一
Db::name('user')->data($data)->insert(); //方式二
}
更新数据:
public function update(){
Db::name('user')
->where('id', 1)
->update(['name' => '猪大强']);
}
删除数据:
// 根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);
// 条件删除
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();
如上,基本完成了增删改查的功能。
数据验证
每个字段增加若干个验证规则,以|分隔。如果有详细的规则,以冒号:逗号,来描述。验证为假,并不会阻止表单的的insert行为,而是自己需要手动的根据判断结果来控制。
<?php /** * 2019-08-19 17:06:38 */ namespace app\index\validate; use think\Validate; class User extends Validate{ protected $rule = [ 'name'=>'require|max:25', 'age'=>'number|between:1,150', 'sex'=>'number|between:1,2' ]; protected $message = [ 'name.require' =>'姓名是必填字段', 'name.max' =>'姓名最多不能超过25个字', 'age.number' =>'年龄必须是数字', 'age.between' =>'年龄只能在1-120之间', 'sex.number' =>'性别填写有误', 'sex.between' =>'性别填写有误' ]; }也可以使用数组来定义。
控制器内,进行验证。
//数据验证,可选。 推荐使用这种方式。 $validate = new \app\index\validate\User; if (!$validate->batch()->check($data)) { dump($validate->getError()); exit; }
小结
按照完整的业务流程,应该包含提供数据展示,数据的提交表单,用户提交表单后,前端要对数据进行验证,后端过滤用户数据,后端进行数据验证(数据格式的验证、业务逻辑验证),数据入库。数据处库时,也要验证。上面的例子将所有的逻辑,都写在的控制器内。后期应该更改。
接下来,应该学习:
路由功能、