phalcon-进阶篇2(拦截器)
#phalcon-进阶篇2(拦截器)#
本教程基于phalcon2.0.9版本
##前言## 先在这里感谢各位phalcon技术爱好者,我们提供这样一个优秀的交流平台
哈喽大家好啊!今天我们继续来说拦截器,拦截器在phalcon的文档里面称之为验证,但是我更喜欢叫做拦截器,拦截起主要是起到对于参数做验证的功能,如果你没有按照约定的规则来请求就报错,可以见得拦截器在请求中担当一个比较重要的地位,phalcon的拦截器能给我们带来什么新的惊喜呢?让我们来一探究竟把
注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术
附上:
喵了个咪的博客:http://w-blog.cn
教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorial
phalcon官网地址:https://phalconphp.com
phalcon中文社区:http://www.iphalcon.cn/
##1. 拦截器对比##
买个关子,为什么一开始来不直接说是怎么实现呢?我们先来看看另外两个框架的拦截器分别是api开发框架phalapi和go框架beego
phalapi
'login' => array(
'username' => array('name' => 'username', 'require' => true),
'password' => array('name' => 'password', 'require' => true, 'min' => 6),
),
beego
u := User{"man", 40}
valid := validation.Validation{}
valid.Required(u.Name, "name")
valid.MaxSize(u.Name, 15, "nameMax")
valid.Range(u.Age, 0, 18, "age")
if valid.HasErrors() {
for _, err := range valid.Errors {
log.Println(err.Key, err.Message)
}
}
phalcon
$validation = new Validation();
$validation->add('name',new PresenceOf(array('message' => 'The name is required')));
$validation->add('email',new PresenceOf(array('message' => 'The e-mail is required')));
$validation->add('email',new Email(array('message' => 'The e-mail is not valid')));
$messages = $validation->validate($_POST);
if (count($messages)) {
foreach ($messages as $message) {
echo $message, '<br>';
}
}
大家对比一下这三个框架的验证机制可以看出些什么,phalapi是一体式框架把后面的参数验证封装了,看看beego和phalcon是不是很像他们都是组件式框架,如果大家喜欢也可以自己封装成phalapi一样简单
##2. phalcon拦截器##
回到今天正题我们来讲讲phalcon的拦截器的使用,这里我建立了一个ValidationController代码如下:
use PhalconValidation;
use PhalconValidationValidatorEmail;
use PhalconValidationValidatorPresenceOf;
//初始化拦截器
$validation = new Validation();
//定制你的拦截器规则,你需要验证的参数名比如:name,如果验证失败返回的message
$validation->add(
'name', new PresenceOf(array(
'message' => 'The name is required'
)))->add(
'email', new PresenceOf(array(
'message' => 'The e-mail is required'
)))->add(
'email', new Email(array(
'message' => 'The e-mail is not valid'
)));
//可以先过滤和清理请求参数
$validation->setFilters('name', 'trim');
$validation->setFilters('email', 'trim');
//注入参数可以放get可以放post可以限制数据源
$messages = $validation->validate($_REQUEST);
//判断有没有验证通过
if (count($messages)) {
//如果通过打印报错信息
foreach ($messages as $message) {
echo $message, '<br>';
}
//结束执行后面的内容不再执行
return;
}
我们试着访问一下http://phalcon.w-blog.cn/phalcon/Validation应为我们什么都没有会得到如下返回:
如果我们带上请求参数http://phalcon.w-blog.cn/phalcon/Validation?name=fsfa&email=591235675@qq.com这个时候请求是成功的
##3. 小结##
今天的内容就到这里了,大家有没有学到phalcon的拦截器呢,phalcon的拦截器还可以自己继承重写封装等等功能具体可以参考文档,这里只是简单说明一下,代码都会上传喜欢的话可以关注我的博客哦!
注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!
Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎大家的加入!
- 3.python文件操作
- TensorFlow修炼之道(2)——变量(Variable)
- 4.python迭代器生成器装饰器
- 洛谷P2044 [NOI2012]随机数生成器
- 5.python函数
- TensorFlow 修炼之道(1)——张量(Tensor)
- 6.python内置函数
- 附加文件时候的提示“无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的 ”
- 7.python常用模块
- 8.python面向对象编程
- 莫比乌斯反演0
- 9.python异常处理
- Numpy 修炼之道 (9)—— 广播机制
- python爬虫人门(10)Scrapy框架之Downloader Middlewares
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法