phalcon-入门篇5(请求与返回)

phalcon-入门篇5(请求与返回)

本教程基于phalcon2.0.9版本

前言

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

在节后上班的第一条小编已经迫不及待的来为大家带来今天的phalcon教程,今天所讲的是phalcon中的请求和返回,只要我们一提到web应用无论是API还是MVC都离不开重要的两个组件,在phalcon内部提供了很多方便使用的内部函数和方法,那让我们来开始今天的phalcon之旅.

注:笔者水平有限,说的不正确的地方希望大家多多指正,一同交流技术

附上:

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

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

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

phalcon中文社区:http://www.iphalcon.cn/

1. 请求

要讲请求大家都在熟悉不过了,无非就是更具用户的行为获取参数进入到对应的处理逻辑处理控制器,phalcon也很注重这一点我们在控制器类中可以通过一下方式获取请求类实例

$request = $this->request;

当然大家可以自己进行实例:

use Phalcon\Http\Request;
$request = new Request();

但是应为机制问题自己实例出来的请求实例和从控制器中获取的实例是不同的,在请求中的区别主要是不能使用快捷的过滤器(其实问题不大,这类问题会在后续教程中深入研究)那么还是建议大家使用控制器自带的请求实例

1.1 模拟请求工具

说道这里有的人会问,请求有好多种还有参数在游览器URL中只能使用GET请求那么其他的请求方式要怎么办呢?

大家不用担心小编这就给大家介绍一个简单易用的模拟请求工具Postman需要在Chrome应用商店中下载(需要翻墙)

这个是主界面大家感受一下

1.2 RequestController

请求工具我们也已经有了,现在是万事俱备只欠东风了,接着我们建立一个控制器名字为RequestController建立indexAction方法我们在indexAction中加入如下代码:

$request = $this->request;

var_dump($request->get());                          //默认获取所有的请求参数返回的是array效果和获取$_REQUEST相同
var_dump($request->get('wen'));                     //获取摸个特定请求参数key的valuer和$_REQUEST['key']相同
var_dump($request->getQuery('url', null, 'url'));   //获取get请求参数,第二个参数为过滤类型,第三个参数为默认值
var_dump($request->getMethod());                    //获取请求的类型如果是post请求会返回"POST"
var_dump($request->isAjax());                       //判断请求是否为Ajax请求
var_dump($request->isPost());                       //判断是否是Post请求类似的有(isGet,isPut,isPatch,isHead,isDelete,isOptions等)
var_dump($request->getHeaders());                   //获取所有的Header,返回结果为数组
var_dump($request->getHeader('Content-Type'));      //获取Header中的的莫一个指定key的指
var_dump($request->getURI());                       //获取请求的URL比如phalcon.w-blog.cn/phalcon/Request获取的/phalcon/Request
var_dump($request->getHttpHost());                  //获取请求服务器的host比如phalcon.w-blog.cn/phalcon/Request获取的phalcon.w-blog.cn
var_dump($request->getServerAddress());             //获取当前服务器的IP地址
var_dump($request->getRawBody());                   //获取Raw请求json字符
var_dump($request->getJsonRawBody());               //获取Raw请求json字符并且转换成数组对象
var_dump($request->getScheme());                    //获取请求是http请求还是https请求
var_dump($request->getServer('REMOTE_ADDR'));       //等同于$_SERVER['REMOTE_ADDR']

echo "<h1>Request!</h1>";

现在可以试着请求一下我们会获得类似如下的结果:

这里强烈建议大家对每一个函数都亲身实地的去尝试一次会有比较好的了解

2. 返回

对于返回来说就有很多重形式了,比如对Header头定制,比如API应用直接打印返回类容,比如web应用需要做跳转到其他的模块,或者是跳转到别的网页地址,还有异常处理,相对于请求来说就相对比较多了,当然和请求一样我们需要获取返回实例通过一下方式获取请求类实例

$response = $this->response;

我们还是建立一个控制器名字为ResponseController建立indexAction方法我们在indexAction

2.1 Header

在某些情况下我们可能会需要返回一些特定的header我们可以使用如下方式

 //Header类
$headers = $response->getHeaders();                         //获取Headers实例
$headers->set('header1', 'header1');                        //写入header实例一个header头
$response->setHeaders($headers);                            //设置一组返回的headers头
$response->getHeaders();                                    //查看当前的headers头
$response->setHeader('header2', 'header2');                 //单独设置一个返回的header头

以上两种方式都可以达到修改header的目的

2.2 跳转

在web应用下面经常的页面跳转是必须的,我们来看看下面代码的实现

//跳转类
//$response->redirect("Request/Index");                     //跳转到这个内部的Request模块Index方法(注意需要设置URL不然会跳转到public显示404)
//$response->redirect("http://www.baidu.com", true);        //跳转到这个外部地址
//$response->redirect("http://www.baidu.com", true, 302);   //跳转到这个外部地址并且给当前页面一个状态码

2.3 return

在API或者是其他场景下我们可能是去直接打印一系列字符串,还有返回http状态包括404报错或者是200成功此类的操作如下:

  //return类
//$response->appendContent('test');                          //添加一段返回类容
//$response->setJsonContent(array('Response' => 'ok'));      //返回一个json,参数必须是数组
//$response->setContent("<h1>Hello!</h1>");                  //返回需要显示在页面上的内容
//$response->setStatusCode(404, "Not Found");                //返回http请求状态,以及msg
//return $response->send();                                  //打印响应

3. 小结

在这里还是强烈建议大家可以自己动手实践一下,看的感觉和自己写的感觉是完全不一样的,那我们回顾一下今天的内容,主要是对phalcon请求和返回做了简单的展示,基本上可以满足日常项目开发中的使用,代码都会放到开源中国phalcon教程代码库中大家可以自行下载查阅,也多谢大家一直以来的支持和关注.

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

时间: 2024-12-21 18:02:04

phalcon-入门篇5(请求与返回)的相关文章

phalapi-入门篇3(请求和返回)

phalapi-入门篇3(请求和返回) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 这一小节主要讲一下请求(参数验证),返回(怎么返回自己想要的结果),官方文档也有比较详细的说明所以在有些比较基础的地方就一笔带过,讲一点比较实用在项目开发中怎么使用phalapi框架定制出自己想要的请求和返回结果. 请先通读: [1.12] 参数规则:接口参数规则配置 [1.13] 统一的接口请求方式:?sevice=XXX.XXX [1.14] 统一的返回格

.NET Remoting程序开发入门篇

程序 一.Remoting基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程.这个进程形成了应用程序代码和数据周围的一道边界.如果不采用进程间

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明. 附上: 官网地址

Phalcon入门教程之模型CURD(2)

原文发表于:Phalcon入门教程之模型CURD(2) 上一篇 Phalcon入门教程之模型CURD(1) 中介绍了 Phalcon 模型的 insert 和 select 操作,本篇将介绍 update 和 delete 的用法.文中所用的示例代码皆沿用上一篇的数据表,这里不在赘述. 更新记录 Phalcon 模型更新记录的示例代码如下: $articleModel = new ArticlesModel(); //先调用 findFirst() 获取一条记录,返回值是当前模型对象 $arti

Phalcon入门教程之模型CURD(1)

原文发表于:Phalcon入门教程之模型CURD(1) 上一篇<Phalcon入门教程之模型>中介绍了数据库模型操作的一些基础功能,本篇将介绍模型的 select 和 insert 用法.由于数据库模型操作的内容比较多和细,所以本篇只是粗略的介绍基础用法,以及补充文档中没有提及的一些用法和注意点.因此,强烈建议大家在熟读文档的前提下,再阅读此篇教程. 数据表 假设数据表名为 test_articles,数据结构及记录下: mysql> select * from test_article

Phalcon入门教程之控制器

原文发表于:Phalcon入门教程之控制器 控制器在MVC分层中的主要作用是处理请求与响应.Phalcon中的控制器类必须以" Controller "为后缀,action则以" Action "为后缀. " Phalcon\Mvc\Controller "是Phalcon中控制器的基类,我们写的控制器类通过继承此基类,可以调用在DI中注册的各种服务.一个简单的控制器类示例如下: namespace Marser\App\Frontend\Con

Nodejs学习笔记之入门篇_node.js

分享第一篇,关于 NodeJS -- Javascript 的常用知识以及如何从 Javascript 开发者过渡到 NodeJS 开发者(不会介绍具体的框架).在读本文前,希望你对 javascript 有一些初步的认识. Javascript 是一门原型模型的解释型语言.解释型将在后面的 NodeJS 里面讨论,原型链是 ES6 之前的 Javascript 的面向对象的实现方式之一,在 ES6 中支持的 class 增加了一种新的实现方式.在 Javascript 里面所有东西都是对象,包

ASP漏洞全接触-入门篇

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果

【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建

孔壹学院:国内区块链职业教育引领品牌. 作者:黎跃春,孔壹学院创始人,区块链.高可用架构师 微信:liyc1215 区块链博客:http://liyuechun.org 在阅读这篇文章之前,你需要先学习[IPFS + 区块链 系列] 入门篇 - IPFS环境配置这篇文章. 目录 1. 如何在IPFS新增一个文件 1.1 新建file.txt文件 1.2 查看ipfs相关命令 1.3 将file.txt添加到ipfs节点 2. 通过ipfs创建目录存储文件 3. 如何在IPFS新增一个目录 3.1