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 基础知识梳理( ...
随机推荐
- BZOJ-1833(数位DP)
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a,b; int k[20]; ll dp[2 ...
- MySQL数据库主从切换脚本自动化
MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...
- django知识分支_1
django知识分支 1.Cookie工作流程: 浏览器向服务器发出请求,服务器接收到浏览器的请求进行处理,服务器设置一个cookie发送给浏览器,浏览器将cookie保存,当需要再次登录的时候,浏览 ...
- poj 1742 多重背包问题 dp算法
题意:硬币分别有 A1.....An种,每种各有C1......Cn个,问组成小于m的有多少种 思路:多重背包问题 dp[i][j]表示用前i种硬币组成j最多剩下多少个 dp=-1的表示凑不齐 dp ...
- python中子进程不支持input()函数输入
错误的源代码: import socketimport threadingimport multiprocessing# 创建socketserve_socket = socket.socket(so ...
- python基础学习笔记——类的成员
一. 细分类的组成成员 之前咱们讲过类大致分两块区域,如下图所示: 每个区域详细划分又可以分为: class A: company_name = '老男孩教育' # 静态变量(静态字段) __ipho ...
- Python学习-day6 面向对象概念
开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...
- Python学习-day4
学习装饰器,首先听haifeng老师讲解了一下准备知识. 1.函数即变量 2.高阶函数+嵌套函数==>装饰器 装饰器的作用是在,1)不改变源代码,2)不改变原函数的调用方式的前提下为函数增加新的 ...
- [译]pycache是什么?
原回答: https://stackoverflow.com/questions/16869024/what-is-pycache 当你用python运行一个程序时,解释器首先将它编译成字节码(这是一 ...
- C#发送邮件异常,返回信息乱码
发邮件时出现了异常: 在 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) 在 ...