tp5常用部分整理(未完结)
目录
——————————
1.基本配置
分为全局配置,应用配置和模块配置。
全局配置:在thinkphp/convention.php,里面包含了所有默认配置项,一般不会进行修改
应用配置:application目录下的配置,个人喜欢在入口文件(public/index.php中进行配置新的config目录,不对application/config.php本身进行操作)。
define('CONF_PATH', __DIR__ . '/../config/');
模块配置:当前模块的独立配置,可放在application\模块名里面,同样命名为config.php
2.常用配置:
解析方式
// URL参数方式 0 按名称成对解析 1 按顺序解析
‘url_param_type’ => 0,
成对解析:
假如url带有参数,则:
http://xxx:xx/模块/控制器/操作/参数名1/参数值1/参数名2/参数值2…
顺序解析:
http://xxx:xx/模块/控制器/操作/参数值1/参数值2…
场景配置
配置参数: ‘app_status’ => ‘home’,
根据不同情况,此处配置值不同。每个场景根据名字进行单独配置,根据场景不同,修改此值即可。
-
路由配置
// 是否开启路由
‘url_route_on’ => true,
// 是否强制使用路由
‘url_route_must’ => false,
url_route_on
true时可以使用route.php进行路由配置
false时route.php中的配置无效
url_route_must
true时必须使用route.php进行配置,没有配置的部分不能访问
false时如果网址进行了路由配置,则采用配置
如果没有进行路由配置,则采用原有无路由配置
3.路由配置
Route::get
get方法进行路由配置,同理配置post方法,例:
\think\Route::get('iii','index/index/index',['ext'=>'html']);
解析:
把路径为http://xxx:xx/index/index/index的路径改为:
http://xxx:xx/iii.html
其中ext代表后缀,第一个参数替换第二个参数的部分
\think\Route::rule('work/:name/[:job]','index/index/work','GET',['ext'=>'html'],['name'=>'\w{3,10}'],['job'=>'\w{1,10}']);
rule可以是任何网络传输方式,get和post都可以,需要修改第三个参数,
:xx
xx代表参数,需要与参数列表命名相同,此处可增加对参数的限制
[:xx]
方括号代表此参数xx可以不填写
此处可以使用正则表达式进行类型检查
\think\Route::group
分组:对于使用正则表达式限制输入后,可共用地址地址的一组数据,进行统一管理,例:
\think\Route::group( 'test',[
":var1"=>'test1',
":var2"=>'test2',
":var3"=>'test3',
],[
'method'=>'get',
'prefix'=>'index/index/'
],[
'var1'=>'\d{2,4}',
'var2'=>'[a-zA-Z]+',
'var3'=>'0|1'
]
);
上面代码test1的参数叫var1,test2参数var2,test3参数var3,让它们共用http://xxx:xx/test地址,因为当参数为0到1位test3,参数为字母调用test2,参数为2-4位数字调用test1
\think\Route::alias
此处别名可批量路由,缺点是不能区分get,post:
\think\Route::alias('test','\app\index\controller\Test',[
// 'allow'=>'add,sub'
'except'=>'add,sub'
]);
优点是可设置黑白名单,灵活批量路由
#### \think\Route::bind
路由绑定,同级只支持一个,只能绑定最常用的,用于缩短访问网址,级别模块,控制器,操作中任意
\think\Route::bind('index');
\think\Route::bind('index/index');
\think\Route::bind('index/index/index');
4.数据库配置
在application的database.php,如果用场景配置,记得要进行二级配置,不然database直接指向数据库名,一直访问失败:
<?php
return[
database=>[此处配置数据库参数],
];
里面的以下参数为比配置项
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '',
// 数据库名
'database' => '',
// 用户名
'username' => '',
// 密码
'password' => '',
// 端口
'hostport' => '',
5.数据库操作
语句查询
$sql = "select * from staff where name=?";
$result = Db::query($sql,['abc']);
或:
$sql = "select * from staff where name=:name";
$result = Db::query($sql,['name'=>'abc']);
$result为查询结果
SQL语句CRUD
//增
$sql = "insert into staff(name) VALUES ('hahaha')";
//改
//$sql = "update staff set name='abc' where name = 'dyy'";
//删
//$sql = "delete from staff where name='hahaha'";
$result = Db::execute($sql);
因为方式相同,所以合起来写了,$result为影响的行数。
封装方式增删改查
查询模板:
Db::table('表名')->field(['列名','列名',...])->where('列名','符号','限制').select();
查询例子:
Db::table('user')->field(['name','age'])->where('age','neq','10').select();
以上为查询user表的name,age列,满足age
插入模板:
$affected = Db::table('表名')
->insert([
'列名'=>'列值',
...
]);
插入例子:
$changed = Db::table('user')
->insert([
'name'=>'秦始皇',
'age'=>8000,
]);
修改模板:
$affected = Db::table('表名')
->where('列名','符号','值')
->update([
'更新列'=>'修改值'
]);
修改例子:
$affected = Db::table('user')
->where('id','=',1)
->update([
'name'=>'abc'
]);
删除模板:
$affected = Db::table('表名')
->where('列表','符号','限制')
->delete();
$affected = Db::table('user')
->where('id','>',5)
->delete();
实体
生成实体: 方式1
:建立application下某模块下的model目录,内建立类,需要继承Model 方式2
:使用php命令:php think make:model 模块名/类名
$staff = Staff::get(1)->getData();