phalcon-进阶篇2(拦截器)
来源:互联网 发布:冬天甲醛挥发 知乎 编辑:程序博客网 时间:2024/06/05 18:51
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 Phalcon\Validation;use Phalcon\Validation\Validator\Email;use Phalcon\Validation\Validator\PresenceOf;//初始化拦截器 $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 欢迎大家的加入!
- phalcon-进阶篇2(拦截器)
- phalcon-进阶篇1(过滤与清理)
- phalcon-入门篇2(HelloWord与PhalconTools)
- phalapi-进阶篇3(自动加载和拦截器)
- phalcon
- struts2 中的拦截器例子快速进阶
- struts2进阶【6】——拦截器
- CDI进阶第一步 CDI拦截器
- phalcon-入门篇8(Model层基础使用2)
- SSH进阶(2)——用Struts拦截器实现登陆限制
- phalcon-入门篇6(控制器)
- CDI进阶第二步 自定义注解拦截器
- Phalcon学习笔记(2)DI依赖注入器和加载器
- phalcon-入门篇5(请求与返回)
- 【Phalcon】Hello Phalcon!
- Struts 2拦截器
- Struts 2拦截器
- Struts2拦截器2
- Pascal's Triangle
- CS8900A网络驱动程序移植
- phalcon-进阶篇1(过滤与清理)
- 自学Linux第二天
- 要撤了啊
- phalcon-进阶篇2(拦截器)
- 自学Linux第三天
- LaTeX半小时速成究极进化版(修改版)
- [转]技术领导要不要写代码?
- [转]在创业公司做架构师,你需要解决哪些问题?
- exit( )函数与return的区别
- WinEdt显示行号
- 表示不会玩
- [喵咪Liunx(1)]计划任务队列脚本后台进程Supervisor帮你搞定