3. 数据库

相信跟完那几个SQLi漏洞的代码分析,就已经对TP种数据库操作有些了解了,故略。

4. 模板

4.1 变量输出

// index.php 控制器
use think\Controller;
use think\View;
class Index extends Controller
{
public function index()
{
$view = new View();
$view->name = 'thinkphp';
return $view->fetch();
}
}
# index.html
<html>
Hello,{$name}!
</html>

可以大致理解为:访问index方法,fetch渲染时会把name变量给传到index.html,而模板引擎解析的{$name}实际上就是<?php echo($name);?>

注意模板标签的{和$之间不能有任何的空格,否则标签无效。

输出数组变量的value用{$array.key}

输出对象属性value用{$obj:property}或者${obj->property}

输出其他变量(比如系统变量)以$Think开头,比如`{$Think.cookie.name}`

4.2 使用函数、默认值

{$name|md5|strtoupper|substr=0,3}
# 解释:多个函数之间用“|”分割
编译后即为:
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>
# 还可以简单的写法
{:substr(strtoupper(md5($name)),0,3)}
# 加个默认值
{$user.nickname|default="这家伙很懒,什么也没留下"}

4.3 TP内置标签

内置标签还是全一点把,遇到忘了的直接去开发手册查

==PS:这儿有一个简单的MVC代码案例==

5. 日志和错误

6. 杂项

6.1 缓存

image-20220413195111418

支持的缓存类型包括file、memcache、wincache、sqlite、redis和xcache。

驱动方式就是指什么形式存 缓存的数据

如果定义了多个缓存驱动:

// 切换到file操作
Cache::store('file')->set('name','value');
Cache::get('name');
// 切换到redis操作
Cache::store('redis')->set('name','value');
Cache::get('name');

在TP类库里面thinkphp.php这个数据库查询类调用Cache比较多。

Session 、Cookie 和 缓存差不多。

6.2 上传规则

默认情况下,会在上传目录下面生成以当前日期为子目录,以微秒时间的md5编码为文件名的文件。

/upload/20160510/42a79759f284b767dfcb2a0197904287.jpg

而且一般都在public/upload/目录下。

还有可能以32位哈希的前两位当子目录。

上传时可以用$file->rule()自定义文件名生成的规则,如`$file->rule(‘md5’)->move(‘/home/www/upload/’);`

File类的成员函数move()执行成功后文件成功上传,返回一个File类的对象,失败返回false。可以看看File类都有哪些成员,毕竟是文件相关的类,很有用。

File类继承了PHP的SplFileObject类,因此可以调用SplFileObject类所有的属性和方法。SplFileObject手册解释

点击关注,共同学习!
[安全狗的自我修养](https://mp.weixin.qq.com/s/E6Kp0fd7_I3VY5dOGtlD4w)

[github haidragon](https://github.com/haidragon)

https://github.com/haidragon

学习笔记-TP5框架学习笔记(杂项)相关推荐

  1. 学习笔记-TP5框架学习笔记\(路由\)

    TP5框架简单理解 (PS:只做粗略.关键知识的记录,TP程序的开始.详情请阅读官方手册) 1. 架构总览 TP程序的开始 PHP >=5.3.0, PHP7 ThinkPHP5.0应用基于MV ...

  2. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)

    开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...

  3. 【安卓Framework学习】Wifi框架学习之热点评分机制

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...

  4. 【安卓Framework学习】Wifi框架学习之核心类

    系列文章目录 [安卓Framework学习]Wifi框架学习之开启与关闭流程 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开 ...

  5. 【安卓Framework学习】Wifi框架学习之wifi状态机

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类. [安卓Framework学习]Wifi框架学习之开启与关闭流程. [安卓Framework学习]Wifi框架学习之连接与断开流程 ...

  6. 【安卓Framework学习】Wifi框架学习之开启与关闭流程

    系列文章目录 [安卓Framework学习]Wifi框架学习之核心类 [安卓Framework学习]Wifi框架学习之wifi状态机 [安卓Framework学习]Wifi框架学习之连接与断开流程 [ ...

  7. PHP再学习4—— slim框架学习和使用

    0.前言 slim是一个简单而又强大的PHP5框架,可以用来创建RESTful的web应用.可以借助slim框架设计一个简化版的yeelink平台.RESTFul架构对物联网非常重要,通过Slim的学 ...

  8. php slim 怎么用,PHP再学习4—— slim框架学习和使用

    0.前言 slim是一个简单而又强大的PHP5框架,可以用来创建RESTful的web应用.可以借助slim框架设计一个简化版的yeelink平台.RESTFul架构对物联网非常重要,通过Slim的学 ...

  9. 【Go 框架开发】Zinx 框架开发笔记

    Zinx 框架开发笔记 Zinx 框架开发笔记 Zinx - V0.1 构建最基础的 server Zinx - V0.2 连接封装与业务绑定 Zinx - V0.3 框架路由模块 Zinx - V0 ...

最新文章

  1. 面试又挂了,你理解了 Java 8 的 Consumer、Supplier、Predicate和Function吗?
  2. 手把手演示:如何规划一个企业级数据中台
  3. amd显卡显存测试程序_AMD发布Radeon 6000系列显卡:能耗比大提升
  4. 实数是不是python数据类型_Python数据类型之数字(Numbers)和运算符
  5. jQuery-H5-css3转盘抽奖-遁地龙卷风
  6. 牛客寒假算法基础集训营2 A处女座的签到题
  7. 用VC写Assembly代码(4)
  8. 例子---年倒计时/JS日期对象类型
  9. 车险赔付率分析报告_车险综合改革出台:下调附加费用率,三者限额提至千万...
  10. 记一次mysql中文字符乱码的问题排查
  11. (转载)python re模块详解 正则表达式
  12. Silverlight笔记:模态窗体的实现
  13. Java-事务的传播特性和隔离级别
  14. 360发起网民隐私保卫战
  15. size与capacity的区别
  16. 01.Polsarpro软件介绍
  17. Boss直聘怎么写出优秀的简历?
  18. 高效能人士的七个习惯及亚马逊十四条领导力准则
  19. 关于鼠标右键的快捷键
  20. iOS 点击提示框视图以外的其他地方时隐藏弹框

热门文章

  1. 3DMax阵列复制、模型的参考、复制、实例之间的差别
  2. 不明原因儿童急性肝炎与新冠有关?!柳叶刀子刊最新研究激起千层浪
  3. linux+批量更改文件名后缀,Linux批量更改文件后缀名
  4. python如何进入venv环境_python 环境之 venv
  5. PyCharm使用venv虚拟环境
  6. 宝塔 xdebug idea 调试 php
  7. Python 安装及运行方式
  8. 打卡第59天:长亭XRAY
  9. android底层截图,Android源码中屏幕截图的实现
  10. 怎样清理苹果手机内存空间_这才是正确清理苹果手机内存的方法,清理后和新机一样流畅...