phalcon-进阶篇2(拦截器)

#phalcon-进阶篇2(拦截器)#php

本教程基于phalcon2.0.9版本git

##前言## 先在这里感谢各位phalcon技术爱好者,咱们提供这样一个优秀的交流平台api

哈喽你们好啊!今天咱们继续来讲拦截器,拦截器在phalcon的文档里面称之为验证,可是我更喜欢叫作拦截器,拦截起主要是起到对于参数作验证的功能,若是你没有按照约定的规则来请求就报错,能够见得拦截器在请求中担当一个比较重要的地位,phalcon的拦截器能给咱们带来什么新的惊喜呢?让咱们来一探究竟把框架

注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术post

附上:ui

喵了个咪的博客:http://w-blog.cn.net

教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorialcode

phalcon官网地址:https://phalconphp.comblog

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 欢迎你们的加入!

相关文章
相关标签/搜索