ThinkPHP3.2基础知识(三)
1、如何开启调试模式,开启调试模式有什么用处?
// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG',True);
开启调试模式的用处:方便及时发现隐患问题和分析、解决问题。
2.如何定义空空控制器和空操作?
空操作:
<?php
namespace Home\Controller;
use Think\Controller;
class CityController extends Controller{
public function _empty($name){
//把所有城市的操作解析到city方法
$this->city($name);
}
//注意 city方法 本身是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
空控制器:
<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller{
public function index(){
//根据当前控制器名来判断要执行那个城市的操作
$cityName = CONTROLLER_NAME;
$this->city($cityName); }
//注意 city方法 本身是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
}
3、控制器的参数的前置和后置操作如何定义?
前置操作:_before_操作名 后置操作:_after_操作名
例子:
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
//前置操作方法
public function _before_index(){
echo 'before<br/>';
}
public function index(){
echo 'index<br/>';
}
//后置操作方法
public function _after_index(){
echo 'after<br/>';
}
}
4.请写出自动验证的规则,要求在修改和新增时都校验密码字段(pwd)的规则并且不管是否为空都要进行校验,规则为:密码要含有大小写字母和数字并且长度要至少为6位;
protected $_validate=array(
array('password','require','密码不能为空!'),
array('password','/^[a-zA-Z0-9]{6}$/','密码不能小于六位!',0,'regex',3),
)
5.3种查询方式和8种查询方法都是什么?
3种查询方式:字符串、数组、对象
8种查询方法:表达式查询、快捷查询、区间查询、组合查询、统计查询、子查询、SQL查询、动态查询
6.请写出一个组合查询中复合查询的示例代码;
$where['name'] = array('like', '%thinkphp%');
$where['title'] = array('like','%thinkphp%');
$where['_logic'] = 'or';
$map['_complex'] = $where;
$map['id'] = array('gt',1);
7、请写出连贯操作中可以重复调用的操作;
where 用于查询或者更新条件的定义 字符串、数组和对象
join 用于对查询的join支持 字符串和数组
union 用于对查询的union支持 字符串、数组和对象
scope 用于命名范围 字符串、数组
bind 用于数据绑定操作 数组或多个参数
8.自动加载的原理;
通过类的命名空间自动定位到类库文件
9.I方法常用的两种过滤规则并说明其含义;
1.htmlspecialchars:把一些预定义的字符转换为 HTML 实体.
使用语法:string:必需。规定要转换的字符串。
quotestyle:可选。规定如何编码单引号和双引号。
character-set:可选,字符串值,规定要使用的字符集。
htmlspecialchars(string,quotestyle,character-set)

例子:



2.strip_tags:剥去 HTML、XML 以及 PHP 的标签。
语法:strip_tags(string,allow)
string:必需。规定要检查的字符串。
allow:可选。规定允许的标签。这些标签不会被删除。
例子:
<?php
echo strip_tags("Hello <b><i>world!</i></b>");
?>
输出:Hello world!
模型中写入的过滤方法:
$this->data($data)->filter('strip_tags')->add();
10.模版赋值的两种参数规则;
字符串:$this-assign('show',$show);
数组:$this-assign($arr);
11.如何修改模版标签的定界符?
'TMPL_L_DELIM' => '<{',
'TMPL_R_DELIM' => '>}'
12.模版变量在模版中输出,字符串、数组、对象都如何输出;
字符串:<{$name}>
数组:<{$data['name']}>
对象:<{$data:name}> 或 <{$data->name}>
13.如何开启批量验证;
protected $patchValidate = true;
14.控制器中如何获取模型类错误信息?
D('表名')->getError();
15.如何有效的防止SQL注入
1.查询条件尽量使用数组方式,这是更为安全的方式;
2.如果不得已必须使用字符串查询条件,使用预处理机制;
3.使用自动验证和自动完成机制进行针对应用的自定义过滤;
4.如果环境允许,尽量使用PDO方式,并使用参数绑定。
查询条件预处理:
Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select();$Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
16.GD库是什么?
是php处理图形的扩展库
ThinkPHP3.2基础知识(三)的更多相关文章
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- Python基础知识(三)
Python基础知识(三) 一丶整型 #二进制转成十进制的方法 # 128 64 32 16 8 4 2 1 1 1 1 1 1 1 例如数字5 : 101 #十进制转成二进制的方法 递归除取余数,从 ...
- C# 基础知识 (三).主子对话框数值传递
在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...
- 快速掌握JavaScript面试基础知识(三)
译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...
- Dapper基础知识三
在下刚毕业工作,之前实习有用到Dapper?这几天新项目想用上Dapper,在下比较菜鸟,这块只是个人对Dapper的一种总结. Dapper,当项目在开发的时候,在没有必要使用依赖注入的时候,如何做 ...
- ThinkPHP3.2基础知识(二)
1.单入口模式的好处: 安全,灵活.可集中进行安全处理,访问统计等统一控制. 2.入口文件中为什么要判断PHP版本,TP要求PHP的版本是什么? 因为ThinkPHP3.2版本只能在PHP版本5.3. ...
- Java的基础知识三
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- Go语言核心36讲(Go语言基础知识三)--学习笔记
03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话). 这里的"其他代码" ...
- 3. K线基础知识三
1. 阴线 证券市场上指开盘价高于收盘价的K线,K线图上一般用淡蓝色标注,表示股价下跌,当收盘价低于开盘价,也就是股价走势呈下降趋势时,我们称这种形态的K线为阴线. 中间部分实体为蓝色,此时,上影线的 ...
随机推荐
- IDLE3.6.3 Mac版不支持中文输入解决办法
最近安装了IDLE 3.6.3版本 但是在IDLE中要输入中文注释时发现虽然输入法切换到了中文,但输入的还是英文.然后我在IDLE外试了下,输入中文没问题,于是就确认应该是IDLE的问题. 网上查询到 ...
- VIM常见用法总结
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- Python中将函数作为另一个函数的参数传入并调用
在Python中,函数本身也是对象,所以可以将函数作为参数传入另一函数并进行调用 在旧版本中,可以使用apply(function, *args, **kwargs)进行调用,但是在新版本中已经移除, ...
- [Spark性能调优] 源码补充 : Spark 2.1.X 中 Unified 和 Static MemoryManager
本课主题 Static MemoryManager 的源码鉴赏 Unified MemoryManager 的源码鉴赏 引言 从源码的角度了解 Spark 内存管理是怎么设计的,从而知道应该配置那个参 ...
- JavaScript数组去重的10种方法
「数组去重」的确是个老生常谈的问题了,但是你真正的掌握了吗?平时开发中是不是用最简单粗暴的方法来去重?注意到它的性能问题了吗?当面试官对你回答的四个去重方法都不满意时你可以想出更简单且性能能更好的方法 ...
- Unity3d 5.x AssetBundle打包与加载
1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...
- 驱动开发入门——NTModel
上一篇博文中主要说明了驱动开发中基本的数据类型,认识这些数据类型算是驱动开发中的入门吧,这次主要说明驱动开发中最基本的模型--NTModel.介绍这个模型首先要了解R3层是如何通过应用层API进入到内 ...
- unisound_asr 云知声 语音识别 python版接口
抽空,实现了一份云知声 语音转写的python版本. 使用python通过调用动态库实现. 云知声官网: http://dev.hivoice.cn/sdk_download/schema_sdk.j ...
- 【转载】linux挂载mount参数优化
一. 1) 蓝色:表示经过优化的xfs mount时的参数defaults,noatime,nodiratime,nobarrier,discard,allocsize=256m,logbufs=8, ...
- pycharm中进行带参数的调试
之前基本都是用print进行调试的,但今天程序运行完需要等很长时间,就尝试pycharm调试. 但是在运行程序需要传递参数,之前只会点击bug按钮直接运行程序,不知道调试的时候传入参数. 运行---& ...