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

相关文章

python进阶篇-day07-高级语法与正则

day07-python其他高级语法 一. with(上下文管理) 介绍 概述 一个类只要实现了__ enter __ () 和 __ exit __ ()方法, 这个类就是一个上下文管理器类, 该类的对象 = 上下文管理器对象 目的 节约资源, 提高效率, 避免手动释放资源, 且出bug的时候, 也会自动尝试释放资源 特点 上下文管理器对象, 可以结合with语句使用

【SpringMVC学习09】SpringMVC中的拦截器

Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法。 1. springmvc拦截器的定义和配置 1.1 springmvc拦截器的定义 在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的

Interceptor拦截器无法拦截根目录的解决方法

今天发现了一个bug,首页home.jsp的某一个值是通过拦截器拦截所有页面,然后赋值的,然而我们的首页是通过index.jsp直接引用首页home.jsp代码(如下),拦截器无法拦截。 <%@ include file="./WEB-INF/jsp/home.jsp" %> 首先,第一个解决方法就是,将首页的引用文件改为跳转即可 <html><head><meta http-equiv

第四十篇:Flink 面试进阶篇

你好,欢迎来到第 40 课时,本课时我们主要讲解“Flink 面试-进阶篇”。 Flink 面试进阶篇主要包含了 Flink 中的数据传输、容错机制、序列化、数据热点、反压等实际生产环境中遇到的问题等考察点。这一阶段主要考察我们对 Flink 掌握的深度,也是给面试官留下好印象的关键环节。 面试题1:请谈谈你对 Flink Table & SQL 的了解情况?以及 TableEnvironme

OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头

一、需求 OpenFeign请求拦截器,注入配置属性类(@ConfigurationProperties),添加配置文件(yml)中的token到请求头 在使用Spring Boot结合OpenFeign进行微服务间调用时,需要在发起HTTP请求时添加一些默认的请求头,比如认证令牌(token)。为了实现这一功能,可以创建一个请求拦截器,并且通过@ConfigurationPropert

过滤器(Filter)和拦截器(Interceptor)

在Web开发中,过滤器(Filter)和拦截器(Interceptor)都是重要的组件,它们都可以对HTTP请求进行预处理、后处理以及一些额外的操作。然而,它们之间在多个方面存在明显的区别 1. 运行位置 过滤器(Filter):运行在Web服务器和Servlet容器之间的组件,可以拦截所有进出该容器的请求和响应。过滤器是Servlet规范的一部分,不依赖于特定的框架。拦截器(Intercep

SpringBoot 拦截器获取http请求参数—— 所有骚操作基础

目录 SpringBoot 拦截器获取http请求参数—— 所有骚操作基础 获取http请求参数是一种刚需定义拦截器获取请求为什么拦截器会重复调两遍呢?ServletInputStream(CoyoteInputStream) 输入流无法重复调用自定义 HttpServletRequestWrapper总结一下 展望一下 获取http请求参数是一种刚需 我想有的小伙伴肯定有过获取ht

python进阶篇-day05-网络编程(TCP)与进程

day05网络编程 一. 网编三要素 ip 概述 设备(电脑, 手机, IPad, 耳机...)在网络中的唯一标识. 分类 按照 代数 划分: IPv4: 4字节, 十进制来表示, 例如: 192.168.13.157 IPv6: 8字节, 十六进制来表示, 理论上来讲, 可以让地球上的每一粒沙子都有自己的IP. Ipv4 常用类别划分: ​ 城域网: 第1段是网络地址

使用Spring Boot拦截器实现时间戳校验以防止接口被恶意刷

使用Spring Boot拦截器实现时间戳校验以防止接口被恶意刷 在开发Web应用程序时,接口被恶意刷请求(例如DDoS攻击或暴力破解)是一个常见的安全问题。为了提高接口的安全性,我们可以在服务端实现时间戳校验,以确保请求的合法性。本文将介绍如何在Spring Boot中使用拦截器来实现一个通用的时间戳验证机制。 一、为什么需要时间戳校验? 时间戳校验是一种简单而有效的安全措施。通过在请求中

20210630拦截器和过滤器的区别,关系型数据库与非关系型数据库区别

一、二者理解 过滤器(Filter) 过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字