phalcon-进阶篇2(拦截器)

2024-05-31 07:32
文章标签 进阶篇 拦截器 phalcon

本文主要是介绍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 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(拦截器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017571

相关文章

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

mybatis用拦截器实现字段加解密全过程

《mybatis用拦截器实现字段加解密全过程》本文通过自定义注解和MyBatis拦截器实现敏感信息加密,处理Parameter和ResultSet,确保数据库存储安全且查询结果解密可用... 目录前言拦截器的使用总结前言根据公司业务需要,灵活对客户敏感信息进行加解密,这里采用myBATis拦截器进行简单实

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

深度解析Spring Boot拦截器Interceptor与过滤器Filter的区别与实战指南

《深度解析SpringBoot拦截器Interceptor与过滤器Filter的区别与实战指南》本文深度解析SpringBoot中拦截器与过滤器的区别,涵盖执行顺序、依赖关系、异常处理等核心差异,并... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

Kafka拦截器的神奇操作方法

《Kafka拦截器的神奇操作方法》Kafka拦截器是一种强大的机制,用于在消息发送和接收过程中插入自定义逻辑,它们可以用于消息定制、日志记录、监控、业务逻辑集成、性能统计和异常处理等,本文介绍Kafk... 目录前言拦截器的基本概念Kafka 拦截器的定义和基本原理:拦截器是 Kafka 消息传递的不可或缺

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规