相信跟完那几个SQLi漏洞的代码分析,就已经对TP种数据库操作有些了解了,故略。
// 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}
{$name|md5|strtoupper|substr=0,3}
# 解释:多个函数之间用“|”分割
编译后即为:
<?php echo (substr(strtoupper(md5($name)),0,3)); ?>
# 还可以简单的写法
{:substr(strtoupper(md5($name)),0,3)}
# 加个默认值
{$user.nickname|default="这家伙很懒,什么也没留下"}
内置标签还是全一点把,遇到忘了的直接去开发手册查
==PS:这儿有一个简单的MVC代码案例==
支持的缓存类型包括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\library\think\db\Query.php这个数据库查询类调用Cache比较多。
Session 、Cookie 和 缓存差不多。
默认情况下,会在上传目录下面生成以当前日期为子目录,以微秒时间的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手册解释