tp5框架原理详解_tp5框架学习笔记总结三

模板布局

第一种方式:全局配置方式

1.开启全局配置中配置

'template' => [

'layout_on' => true,

'layout_name' => 'layout',

'layout_item' => '{__REPLACE__}'  自己定

]

2. 首先会渲染 application/index/view/layout.html 模板

layout中

 

3.适合头尾都一样的,替换原理

模板路径替换

调试

1.未雨绸缪页面Trace

'app_trace'              => false,     看右下角的追踪, 看sql语句调试

Trace设置 开启 app_trace 后 有效,可以为了不挡住页面方console中

'trace'              => [

// 内置Html Console 支持扩展

'type' => 'Html',

],

在方法中可以用 trace(‘’调试内容)  来调试

2.异常页面

应用调试模式

'app_debug'              => false,    开起来可以看到错误的目录,上线务必改成false

3.断点调试

就是用dump()

就是用halt()   这个像exit 不会继续打印了

4.日志分析

引入   use think\Log;

API接口

移动端访问和网页访问没有什么区别,只是移动端返回的一般是JSON数据

 

平时怎么写模型,现在就怎么写。一张表对应一个模型,模型是公用的

扩展(公共类)

在extend中新建org\util文件夹,在里面建一个类 ArrayList,然后其他地方要用就引入,命名空间不要在extend开头了.一般是和项目没什么关系的。,有关系的类放use app\common\util\Myclass;

驱动

一旦报错就会log::error,然后就调用配置的这个类

验证码类

自己下载

composer require topthink/think-captcha

配置、验证

文件上传类

多图就是一个循环,如果是图片就加验证

图片处理类

composer require topthink/think-image

引入下载的use think\Image;

路由

为什么要路由?

1.友好SEO,SEO最多只能抓三层目录

2.安全性

定义路由两种方式

第一种:在route.php文件中直接写

 

但是这种当多个参数时,一样很长,需要改一下配置文件中的'pathinfo_depr'=> '-', 分隔符,这样就全部相当于一个页面 hello-hello-dfasd-asdf.html  打印出 Array ( [name] => hello [dfasd] => asdf );

也可以路由配置 'today/[:year]/[:month]' =>['index/index/today',['method'=>'get'],['year'=>'\d{4}','month'=>'\d{2}']],

路由模式:

普通模式:完全使用默认的 PATH_INFO 方式URL,平常访问显示

混合模式:并使用路由定义+默认 PATH_INFO 方式的混合

强制模式:url_route_on和url_route_must 都设置成true

在配置文件config中

'url_route_on' => true,  // 是否开启路由

' url_route_must' => false,  // 是否强制开启路由

1.路由规则中 包含变量的 就是动态路由,没有包含任何变量的称为静态路由.

2.在路由文件中 return数组的 路由形式, 称之为 静态注册

3.使用Route类的方法(引入Route类) 注册的路由 称之为 动态注册(TP5.0推荐) 以上两者 可同时使用.

路由定义采用 \think\Route 类的 rule 方法注册, 通常是在应用的路由配置文件:route.php中配置

// 动态注册

// Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');

//GET 一旦你对某个规则设置了路由,则之前的PATH_INFO方式访问失效

Route::get('home', 'index/index/index');

//POST 这个在url 网址中不好测试了,用老师给的一个工具Postman

Route::post('ppp', 'index/index/ppp');

//所有都通用

Route::rule('ooxx', 'index/index/index');

4.路由表达式参数

// 无参   tp5.com/user

// Route::get('user', 'index/index/user');

// 必传   tp5.com/user/156

// Route::get('user/:id', 'index/index/user');  还有可选与匹配  请参考手册

// 普通路由,只要定义了这个路径,就必须按路由的url来访问  比如 tp5.com/url

Route::get('url', 'index/index/url');

// RESTful资源路由  默认生成7个对应的资源路由

Route::resource('stu', 'admin/Stu');  //用这个定义是否用路由,定义的控制器必须用路由7个方法来操作

是否自动转换URL中的控制器和操作名

'url_convert'            => false,

URL的统一规格是全部小写,这个设置的作用就是如果你不想转化成也可以。

比如方法名是:IndexHome,在访问的url中需要写成Index_Home,否则找不到(自己写时),TP框架内不需要考虑这个问题,自动处理功能。

RESTful资源控制器

更加智能,只要你按它的方法写参数,它自己可以分辨出是什么方式,但是只能写这7个方法

 

RESTful资源路由  默认生成7个对应的资源路由

Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

// RESTful资源路由  默认生成7个对应的资源路由

Route::resource('stu', 'admin/Stu');

public function index()

{

// 查询数据  和之前的增删改查不会干扰,但是推荐使用这种方式

$list = Db::table('user')->field(['id', 'name'])->order(['id' => 'aes'])->select();

// var_dump($list);

1.之前查好之后放入V层的方式

// $this->assign('list', $list);

// $this->assign('title', '用户列表');

// return $this->fetch('index');  //tp5中返回到视图层

// 助手函数  现在查好之后放入V层的方式

2助手函数

return view('Stu/index', [

'title' => '用户列表',

'list' => $list,

]);

3 判断执行情况

if ($result > 0) {

return $this->success('添加成功', url('admin/stu/index'));

return $this->redirect('/index/Index') ;

} else {

return $this->error('添加失败');

}

ajax操作删除时获取ID

删除

用户列表

添加页

请求

如果要获取当前的请求信息

引入  \think\Request    类

实例化 $request = Request::instance();  或者 助手函数request();

取值

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值