ThinkPHP 5.1 基础知识
==========================================
//模板中的默认标题
{$title|default='默认标题'}
==========================================
模板中的循环
{volist name='data' id='list'}
<span>{$list.id}</span>
{/volist}
===========================================
模板中的静态文件,放在/public/static/下。
模板中引用静态文件:
<script src='/static/js/jquery.js'></script>
============================================
分页:
think\db\Query.php里有个paginate方法,实现sql的分页;
$data = \app\model\Student::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();
}
验证器就是完成框架的think\Validate类中的
属性protected $rule=[]的初始化。
验证器可以放在application下的任何一个控制器可以
访问到的位置。
==========================================================
独立验证:
使用的是验证器类think\Validate中的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类中的函数,
它是由Think\Controller.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(think\Request $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','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的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 闭合,闭包
===============================================
参数绑定:
一种是按照名称:
一种是按照顺序。
===============================================
ThinkPHP 5.1 基础知识的更多相关文章
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- RabbitMQ基础知识
RabbitMQ基础知识 一.背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- selenium自动化基础知识
什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
随机推荐
- OI杂记
从今天开始记录一下为数不多天的OI历程 8.25 上 今天举行了难得的五校联考,模拟noip,题目的解压密码竟然是$aKnoIp2o18$,对你没有看错!!! 7:50老师?啊啊啊啊,收不到题目啊,还 ...
- 【前端_js】Json对象和Json字符串的区别
转载1: Json对象和Json字符串的区别 转载2: JSON字符串与JSON对象的区别
- 编译-LAMP基于fastcgi
前言 最近没更新新篇幅了,今天就来点干活,过多的也不说了下面着手干!干!干! 准备环境 centos7.5 apr-1.6.3.tar.gz apr-util-1.6.1.tar.gz h ...
- Docker系列一:Docker的介绍和安装
Docker介绍 Docker是指容器化技术,用于支持创建和实验Linux Container.借助Docker,你可以将容器当做重量轻.模块化的虚拟机来使用,同时,你还将获得高度的灵活性,从而实现对 ...
- Eclipse将java项目导出可执行的jar文件
1.在java项目上右键,点击“Export”,会弹出一个选择导出的文件类型 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址:https://www.cnblogs.com/poter ...
- JdbcTemplate实验
实验1:测试数据源 @Test public void test() throws SQLException { ApplicationContext ioc = new ClassPathXmlAp ...
- Linux学习-Boot Loader: Grub2
boot loader 的两个 stage 在 BIOS 读完信息后,接下来就是会到第一个开机装置 的 MBR 去读取 boot loader 了.这个 boot loader 可以具有选单功能.直接 ...
- 《鸟哥的Linux私房菜》学习笔记(1)——文件与目录
在Linux中,任何设备都是文件,不仅如此,连数据通信的接口也有专门的文件负责.可以说,一切皆文件,目录也是一种文件,是路径映射.因此,文件系统是Linux的基础. 一.文件与目录管理命令 1.ls( ...
- CentOS-文件操作
centos彻底删除文件夹.文件命令(centos 新建.删除.移动.复制等命令: 1.新建文件夹 mkdir 文件名 新建一个名为test的文件夹在home下 view source1 mkdir ...
- 反转单词顺序 VS 左旋转字符串
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标垫符号和普通字母一样处理.例如输入字符串“I am a student.”,则输出“student. a am I ...