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 基础知识梳理( ...
随机推荐
- Linux性能检测常用的10个基本命令
检测性能的10个命令汇总 uptim dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 ...
- ubuntu 16.04 +anaconda3.6 +Nvidia DRIVER 390.77 +CUDA9.0 +cudnn7.0.4+tensorflow1.5.0+neural-style
这是我第一个人工智能实验.虽然原理不是很懂,但是觉得深度学习真的很有趣.教程如下. Table of Contents 配置 时间轴 前期准备工作 anaconda3 安装 bug 1:conda:未 ...
- CentOS7练习
为编译安装的httpd服务,实现service unit文件破解centos7 口令修改默认的启动内核为新编译内核启动时临时禁用SELinux启动时进入emergency模式卸载编译安装的新内核
- LNMP的环境搭建
新装的Linux 机器,还没有来得及安装网站环境,这篇文章就是记录一下自己安装LNMP的一般步骤. 之前在Laravel视频中看过这段的讲解,后来也试着安装过,基本的命令不算是熟练掌握,所以还要看看之 ...
- 序列内置方法详解(string/list/tuple)
一.常用方法集合 1.1.string,字符串常用方法 以下举例是python2.7测试: 函数名称 作用 举例 str.capitalize() 字符串第一个字符如果是字母,则把字母替换为大写字母. ...
- RSS列表
博客园 http://feed.cnblogs.com/blog/sitehome/rss
- THUSC2019游记
Day 0 完全没有明明是最后一次机会的紧张感.大概是滚粗的预兆. 住在西郊.房间好小. 和thupc前一样又有一场cometoj,好像又有小裙子了.upd:改成星空棒棒糖! Day 1 早餐有点棒. ...
- 【Java学习笔记之九】java二维数组及其多维数组的内存应用拓展延伸
多维数组声明 数据类型[][] 数组名称; 数据类型[] 数组名称[]; 数据类型数组名称[][]; 以上三种语法在声明二维数组时的功能是等价的.同理,声明三维数组时需要三对中括号,中括号的位置可以在 ...
- appium安装,和遇到的问题
https://www.cnblogs.com/fnng/p/4540731.html Appium环境搭建时在cmd中输入appium-doctor命令,提示’appium-doctor’ 不是内部 ...
- cobbler dell r730安装问题(四)
环境介绍: 服务器硬件:dell-13代 R730 Intel xeon E5-2600系列CPU:E5-2609 v4.E5-2620 v4.E5-2650 v4 cobbler版本:cobbler ...