ThinkPHP 5.1 基础知识

==========================================
//模板中的默认标题
{$title|default='默认标题'}
==========================================
模板中的循环
{volist name='data' id='list'}
<span>{$list.id}</span>
{/volist}
===========================================
模板中的静态文件,放在/public/static/下。
模板中引用静态文件:
<script src='/static/js/jquery.js'></script>
============================================
分页:
thinkdbQuery.php里有个paginate方法,实现sql的分页;
$data = appmodelStudent::paginate(5);
$this->view->assign('data',$data);
return $this->view->fetch();
模板中:
<div class='text-center'>{$data|raw}</div>
===============================================
模板中的if标签:
{if $list.grade >= 60}
<span>及格</span>
{else/}
<span>不及格</span>
{/if}
=================================================
模型的命名空间:
namespace app模块名model;
==================================================
Phpstorm编辑器和Subline编辑器,
快速生成html标签的快捷键是:
html:5然后按tab键。
(可以是html后缀的文件,也可以是.php后缀的文件)
===================================================
//直接将内容输出到页面,不通过模板:
return $this->view->dispaly($content);
//使用视图将数据进行输出:
$this->view->assign('data',$content);
return $this->view->fetch();
=================================================
----模板布局---
在配置文件中:
'layout_on' => true,
'layout_name' => 'layout'
在模板中:
模板文件放在view目录下,例如header和footer两个文件。
{include file="header" /}
<span></span>
{include file="footer" /}
或者:
创建在view目录下,创建layout文件:
{include file="header" /}
{__CONTENT__}
{include file="footer" /}
其中__CONTENT__是文件可以替换的部分。
如果不想用__CONTENT__,可以在配置中写:
'layout_item' => '{__TEXT__}'
=================================================
h2然后tab,可以不全<h2></h2>
===================================================
---模板继承---
(1)关掉模板布局
'layout_on' => false

(2)在view下创建一个公共模板目录,public。

(3)创建公共的header和footer。

(4)然后建一个基础模板文件base:
{include file="public/header" /}
{block name="body"}
父模板内容
{/block}
{include file="public/footer" /}

(5)具体模板中的使用:
{extend name="public/base"}
{block name="body"}
{__block__} //可以把父模板中的内容也显示
<span>我是子模板页面内容</span>
{/block}

注意,block标签内的内容才会显示,标签之外的不会显示。
===========================================================
adminer是一个数据库管理工具。
========================================================
Thinkphp有两种验证方式:
(1)验证器,使用的是Validate类中的rule属性;
(2)独立验证。
======================================================
验证器:
$rule = [
'name|姓名'=>[
'require',//或者写成'require'=>'require'
'min'=>5,
'max'=>20
],
'email|邮箱'=>[
'require',
'email',
],
'pass|密码'=>[
'require',
'min'=>3,
'max'=>12,
'alphaNum',//字母和数字
],
'tel|手机号'=>[
'require',
'mobile'
]
]
if(!$validate->check($Data,$rule)){
return $validate->getError();
}
验证器就是完成框架的thinkValidate类中的
属性protected $rule=[]的初始化。
验证器可以放在application下的任何一个控制器可以
访问到的位置。
==========================================================
独立验证:
使用的是验证器类thinkValidate中的rule()方法;
rule()方法实际就是完成给当前类的protected $rule=[]的初始化。
Validate::rule($rule);
if(!Validate::check($data)){
return Validate::getError();
}


========================================================
独立模块配置:
(1)在config目录下,新建一个和模块名一样的目录,放配置文件;
(2)在application目录下的具体模块下,放配置文件。
=======================================================
.htaccess文件要放在应用入口文件的同级目录下,
所以tp5就是放在public目录下。

.htaccess文件只针对apache服务器有效。
=======================================================
common是公共模块,默认配置的是禁止访问的模块,
索引即使放控制器文件也不能被外部直接访问。
======================================================
以前的控制器,5.0之前的,需要继承Controller,现在的不是必须的。
============================================================
tp5.1版本默认采用多模块架构,也支持单一模块设计,即所有的模块
的命名空间均以app作为根命名空间。可通过环境变量更改。
=======================================================
_initialize并非php类中的函数,
它是由ThinkController.class.php实现的一个构造函数方法.
在实例化父类的Controller后,如果子类中存在_initialize方法时,则执行。
此时_initialize相当于子类的构造函数。
======================================================
Tp5.1的默认访问不存在时,访问的是Error控制器。
=================================================
使用trait,可以实现多继承,用use关键字。
=================================================
分层控制器:
在控制器下再建控制器目录,
示例:
模块/controller/controller1/Index.php;
模块/controller/controller2/Index.php;
访问方法:
index/controller1.index.php
index/controller2.index.php
================================================
怎样把一个对象传入一个方法中呢?
使用依赖注入。
示例:
public function index(thinkRequest $request){
$request->module();//当前模块名
$request->controller();//当前控制器名
$request->action();//当前方法名
$request->file();//获取$_FILES
}
==================================================
tp5.1框架默认没有设置任何全局过滤规则,
可以在应用配置文件中设置全局的过滤规则:
// 默认全局过滤方法 用逗号分隔多个
'default_filter' => 'htmlspecialchars',

也可以在获取变量的时候添加过滤方法,例如:
Request::get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
Request::param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤
Request::post('name','','orgFilter::safeHtml'); // 获取post变量 并用orgFilter类的safeHtml方法过滤

可以支持传入多个过滤规则,例如:
Request::param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤

// 获取get变量 并且不进行任何过滤 即使设置了全局过滤
Request::get('name', '', null);

// 只获取当前请求的id和name变量,避免额外变量影响数据处理和写入。
Request::only('id,name');

// 排除id和name变量
Request::except('id,name');

//支持对变量使用修饰符功能
Request::get('id/d');//强制转换为整型类型
================================================
单词:
trait 特点,特性;少许
Closure 闭合,闭包
===============================================
参数绑定:
一种是按照名称:
一种是按照顺序。
===============================================

原文地址:https://www.cnblogs.com/gyfluck/p/10334920.html