笔记tp5:thinkPHP5笔记

thinkPHP5.0–基础篇

第一章 thinkPHP5.0配置

1.惯例配置(框架配置)
convention.php----框架默认配置,用config()函数输出
2.应用配置
app同级目录创建一个conf文件夹,里创建config.php文件,配置覆盖convention.php
3.扩展配置
在conf文件夹下创建extra文件夹,里创建 需配置的项为文件名 文件里的配置为需配置项(数组)的内容(数组内容),扩展配置覆盖应用配置config
在这里插入图片描述
4.场景配置
第一种:在config.php里设置’app_status’,将值设置为:场景名称,如:home;该配置文件同级的目录下,创建与场景名称同名的配置文件,如home.php;

第二种:根据需要在conf文件夹里创建index文件夹,里创建config.php和home.php文件(php中文网)

备注:如果在home.php里配置database项,则需要把database项的全部配置都拷贝过来
还有一种就是在场景文件home.php加个配置‘app_address’=> ‘home’(?慕课网)
在这里插入图片描述
5.模块配置
在app同级的conf文件夹下创建index文件夹,里创建config.php,此针对的是app中index模块的配置,里也可创建extra文件夹,里创建demo.php为扩展配置项。同理可配置admin模块的配置。
在这里插入图片描述
6.动态配置
获取配置:config();配置设置:config(“配置名”,”配置值”);
仅在当前函数中有效
在这里插入图片描述
7.Config类和config助手函数
在这里插入图片描述
8.环境变量的配置和使用
在app同级目录下创建.env文件,在里面设置需要的值,如status=dev。
然后在配置文件或者类文件中use think\Env;用Env::get(‘status’,’prod’);获取环境变量。第二个参数为默认值。

第二章 url和路由

9.入口文件绑定
在这里插入图片描述
第1种方法为在配置文件中配置’auto_bind_module’ => true,通过这两种方法可使入口文件绑定到同名模块api.php->api。Index.php->index模块
10.路由
1.在config.php中配置 ‘url_route_on’ => true,‘url_route_must’ => false。(如果为true则需要配置路由才能访问-route.php中配置,如news/6.html,一般不这样)。
2.在conf文件夹下创建route.php,里return[配置规则];
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三章请求和响应

11.请求对象获取
1.助手函数
$request=request();
2.类的实例
use think\Request;
$request=Request::instance();
3.注入到函数
use think\Request;
Index(Request $request)
在这里插入图片描述
12.请求对象参数的获取
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:如果要保存session,如上图所示。则需要在config.php中设置session

13.input助手函数(获取输入数据)
Input(‘post.id’,100,’intval’);等同于$request->post(‘id’,100,’intval’);第三个参数为过滤方法。 [‘get’, ‘post’, ‘put’, ‘patch’, ‘delete’, ‘route’, ‘param’, ‘request’, ‘session’, ‘cookie’, ‘server’, ‘env’, ‘path’, ‘file’]

14.响应对象(response)
Tp5中方法一般用return返回(内部机制规则)。最好不用echo或die()输出。Return的类型也有要求,如果直接返回一个array则会报错。所以需要配置相关参数。第一种是在那个模块的方法中返回的需要的类型可以在conf下创建该模块文件夹,下创建config.php,返回’default_return_type’ =>’ 类型 ’,
这种方法不推荐,会使得全部模块的返回同一种类型,不灵活,不符开发需要。
另一种直接在方法中定义限制条件,如下图:
在这里插入图片描述

第四章视图和模板

17.视图view
例如,在index/index/index中,我们要引入html文件,则需引入think\Controller;然后index类extends它。里面用$this->fetch();引入html文件。
另一种直接用view()助手函数,两者参数一样。
在这里插入图片描述
明细:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果控制器里的方法直接返回一个字符串,可以使用$this->display();
在这里插入图片描述

总结: t h i s − > f e t c h ( ) ; 返 回 模 板 文 件 。 this->fetch();返回模板文件。 this>fetch();this->display();返回字符串
18.变量输出、赋值和替换
变量赋值的几种方式:
在这里插入图片描述
变量输出:
在这里插入图片描述
变量替换:
第一种:
在这里插入图片描述
在这里插入图片描述
第二种:在配置文件中配置view_replace_str项
在这里插入图片描述
默认在think\View.php中有配置默认的一些变量替换。如__ROOT__,URLSTATICCSSJS。如果需要改变其默认值,可以在config.php文件中的view_replace_str项中改变其值。
在这里插入图片描述
19.系统变量原生标签
在这里插入图片描述
20.变量输出,调节器(过滤器)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
21.模板循环标签
在这里插入图片描述
第一种:volist
在这里插入图片描述
Volist还有其他属性:
在这里插入图片描述
第二种:foreach
在这里插入图片描述
在这里插入图片描述
第三种:for
在这里插入图片描述
22.比较标签
在这里插入图片描述
1.相等
在这里插入图片描述
2.不相等
在这里插入图片描述
3.大于,大于等于
在这里插入图片描述
4.小于,小于等于
在这里插入图片描述
5.value使用变量要加$符号
在这里插入图片描述
23.条件判断标签
1.switch
在这里插入图片描述
在这里插入图片描述
2.range
Type的值有in,notin,between,notbetween,都有其快捷的写法
在这里插入图片描述
3.defined 常量是否定义
在这里插入图片描述
4.if标签
If标签在模板中最好不要大量使用,对性能不好,一般用switch就行了。
在这里插入图片描述
24.模板的布局-》包含和继承
1.包含,把需要重用的部分放在一个文件里,然后用{include file=’’ /}在其他页面引入它
在这里插入图片描述
2.继承
把模板文件放到base.php里面,然后在其他页面继承它,如下:
在这里插入图片描述
其他每个页面的title等其他部位不一样,则在base的模板文件中把需要替换的部位用{block name=’’}{/block}表示,然后在其他页面中用{block name=””}内容{/block}中的重写,如下图:
在这里插入图片描述
在这里插入图片描述
如果其他页面block需要使用模板中block的内容,则用{ block}表示,如下:
在这里插入图片描述

3.layout机制
Layout适合变动少的情况,要使用layout则需要在config中配置,并且在view下创建layout_name同名layout.html,此时即为其他页面的模板文件(其他页面$this->fetch()的时候)
在这里插入图片描述
其他页面的模板文件都为Layout.html文件,Layout.html中的{ CONTENT}部分即为每个页面的变化之处:
在这里插入图片描述
在这里插入图片描述

例如每个页面的title不同可用变量代替{$title}
在这里插入图片描述

thinkPHP5.0–模型篇

第一章:数据库的操作

1.数据库的连接操作

在这里插入图片描述
Connect里返回一个数组,里可配置数据库的参数,或一个字符串,为配置数据库的项,或为dsn方式,或config::get(“配置数据库的项”);可简化为上述一个字符串的方式。
2.数据库查询操作

$res = Db::query('select * from admin_users where id=1');
$res = Db::query('select * from admin_users where id=?',[1]);
Sql语句有两种写法,第二种数组中的每一项对应前面的每个?
$res = Db::execute("insert into user(username,password) values('小黄','12345')");
$res = Db::execute("insert into user(username,password) values(?,?)",['小黄','12345']);

Db::table('think_user')->where('id',1)->find();返回一条数据,一唯数组
Db::table('think_user')->where('id',1)->select();返回多条数据
使用table方式需要加表前缀
Db::name('user')->where('id',1)->find();
Db::name('user')->where('id',1)->select();
使用name方式不需要加表前缀,一般使用name方式连接表

返回某一列
Db::name('user')->column(‘email’,‘username’);多条数据,有第二个参数,则第二个参数为key值,第一个参数为value值
Db::name('user')->value(‘username’);一条数据

3.数据库添加
在这里插入图片描述
在这里插入图片描述
4.数据库更新操作
在这里插入图片描述
5.数据库删除
在这里插入图片描述
第二种写法:
在这里插入图片描述
删除全部数据的写法:(没有条件【where或直接delete()】不能删除数据)
在这里插入图片描述
6.条件构造器

$db = Db::name(‘user’);
//生成sql语句
$sql = $db->where(“id=1”)->buildSql();
$sql = $db->where(“id”,”1”)->buildSql();
$sql = $db->where(“id”,”<>”,”1”)->buildSql();  //id不等于1

$sql = $db->where(“id”,”between”,”1,10”)->buildSql();
$sql = $db->where(“id”,”between”,[1,10])->buildSql();

$sql = $db->where(“id”,”in”,”1,10,20”)->buildSql();
$sql = $db->where(“id”,”in”,[1,10,20])->buildSql();
$sql = $db->where([‘id’ =>1 ])->buildSql();
$sql = $db->where([
‘id’ => [‘egt’,1],
‘username’ => “innn”
 ])->buildSql();

可以链式使用,where为and,whereOr为or
在这里插入图片描述

备注:EQ  =
      NEQ  <>
      LT  <
      ELT  <=
      GT  >
      EGT  >=
      BETWEEN  BETWEEN * AND *
      NOTBETWEEN  NOTBETWEEN * AND *
      IN  IN (*,*)
      NOTIN  NOT IN (*,*)
      Dump($sql);

7.链式操作
在这里插入图片描述

第二章:模型

1.模型
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用model首先需要在conf下的config.php里配置database项,(在convention.php中获取)。要创建model下的模型文件和模型文件同名的数据表。一个模型对应一个数据库。如User.php模型对应user数据表。

2.使用模型查询数据

1.$res = User::get(1);
2.$res = User::get(function($query){
            $query->where('username','eq','2222');
});	
3.$res = User::where('id',3)->field('id,username')->find();
4.User::all(‘1,2,3’);
5.User::all([1,2,3]);
6.$res = User::where('id','<',3)->field(‘id,username’)->limit(2)->order(‘id DESC’)->select();
7.$res = User::all(function($query){
            $query->where('id','<',3);
  });
  foreach ($res as $val) {
    dump($val->toArray());
  }
  dump($res->toArray());
8.$res = User::where(‘id’,2)->value(‘email’);
9.$res = User::column(“email”,”username”);//第二个参数为key,第一个为value

在这里插入图片描述

3.使用模型添加数据
第一种方式:

$res = User::create([
        'username' => "5555",
        'password' => "5555",
        'email' => "[email protected]"
]);

排除数据库中没有的字段,防止出错(过滤不存在的字段):

$res = User::create([
        'username' => "5555",
        'password' => "5555",
        'email' => "[email protected]",
        ‘demo’ =>”sss”
],true);

只想插入需要的字段的值:

$res = User::create([
        'username' => "5555",
        'password' => "5555",
        'email' => "[email protected]",
        ‘demo’ =>”sss”
],[‘username’,’email’]);

第二种方式:

allowField([‘username’]);//这种方式只插入username这个字段

在这里插入图片描述
第三种方式:插入多条数据:
在这里插入图片描述
4.使用模型更新数据
一般我们推荐使用第二种方式和第四种方式,返回影响记录的条数。
第一种:update方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二种:where
在这里插入图片描述
第三种:直接改变值
在这里插入图片描述
第四种:实例的save方法
在这里插入图片描述
第五种:实例的saveAll方法,批量修改多个值
在这里插入图片描述
5.使用模型删除数据
第一种:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二种:
在这里插入图片描述
第三种:
在这里插入图片描述
6.模型聚合操作
在这里插入图片描述
7.模型获取器
在模型中建立模型获取器(函数,命名看图):当数据库中sex字段的值根据在模型中对应的设置返回结果显示在浏览器中。例,sex字段为1,代表男
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8.模型修改器±自动完成
例,当数据库插入一条记录时,比如密码没有用md5加密,我们就可以在模型user.php中建立一个使插入数据md5加密的模型修改器:
在这里插入图片描述
在这里插入图片描述
$val代表密码字段的值,$data代表整条插入的记录,7中的模型getSexAttr方法也可有第二个参数。
2.自动完成
当在index.php中执行操作时,根据操作的性质,如插入,或更新等来执行模型修改器,使数据库中的对应的字段中的值发生需要的改变:如下例子就是当index.php中执行插入操作时,数据库中time_insert字段发生模型修改器中的操作。其他操作对应
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.模型时间戳+软删除
使用模型时间戳,需要在模型文件中设置,如下图。如果要改变数据库中的默认字段的命名,则需要设置,如下图(第一行为开启时间戳,第二行关闭使用插入时间戳,第三行改变默认字段的命名)。当index.php中发生什么操作时,对应会在数据库中的字段中显示该操作的时间戳。
在这里插入图片描述
在这里插入图片描述
使用软删除:默认字段为delete_time,当使用软删除时需要在模型文件中设置
在这里插入图片描述
当在index.php中执行删除操作时,如下
在这里插入图片描述
数据库中的四条数据被删除一条,即delete_time有值了,表示该数据已经被软删除了(数据库中四条数据没变,但delete_time原先为null,表示没删除,有值即表示删除了,此即为软删除),也不能获取到这条数据了,如果想要获取这条数据则需:
在这里插入图片描述
在这里插入图片描述
如果要获取垃圾箱中的值,则
在这里插入图片描述
如果真正要删除数据
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_49888984/article/details/108043830