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 是取出所有匹配的结果集。官方文档如此备注:默认情况下,findselect方法返回的都是数组,区别在于后者是二维数组。

添加数据:

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;
    }

小结

按照完整的业务流程,应该包含提供数据展示,数据的提交表单,用户提交表单后,前端要对数据进行验证,后端过滤用户数据,后端进行数据验证(数据格式的验证、业务逻辑验证),数据入库。数据处库时,也要验证。上面的例子将所有的逻辑,都写在的控制器内。后期应该更改。

接下来,应该学习:

路由功能、