HttpFoundation组件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.0,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

HttpFoundation组件

HttpFoundation组件为HTTP规范定义了一种面向对象的层。

在PHP中,请求是由一些全局变量($ _GET,$ _POST,带有_file美元,_COOKIE美元,_SESSION美元,…)和一些函数生成的响应(回声,,setcookie,……)。

的Sym欧宝娱乐app下载地址fony2 HttpFoundation组件替换这些默认PHP全局变量和函数的一种面向对象的层。

安装

你可以在许多不同的方式:安装组件

请求

最常见的方式来创建PHP请求它基于当前全局变量createFromGlobals ():

1 2 3
使用欧宝娱乐app下载地址\组件\HttpFoundation\请求;美元请求=请求::createFromGlobals ();

这几乎等同于更详细的,但也更灵活,__construct ()电话:

1 2 3 4 5 6 7 8
美元请求=请求(美元_GET,美元_POST,数组(),美元_COOKIE,美元带有_file,美元_SERVER);

访问请求数据

一个请求对象持有客户端请求的信息。这些信息可以通过访问几个公共属性:

  • 请求:相当于$ _POST;
  • 查询:相当于$ _GET(请求- >查询- >获取美元(“名字”));
  • 饼干:相当于_COOKIE美元;
  • 属性:不等效,所使用的应用程序来存储其他数据(见下面)
  • 文件:相当于带有_file美元;
  • 服务器:相当于$ _SERVER;
  • :主要是相当于一个子集$ _SERVER(请求- >标题- >获取美元(“内容类型”))。

每个属性都是一个ParameterBag(或者一个子类的实例),这是一个数据夹类:

所有ParameterBag实例方法来检索和更新它的数据:

ParameterBag实例也有一些方法来过滤输入值:

所有getter方法有三个参数:第一个是参数名和第二个是默认值返回,如果参数不存在:

1 2 3 4 5 6 7 8 9 10
/ /查询字符串是“? foo = bar”美元请求- >查询- >get (“foo”);/ /返回酒吧美元请求- >查询- >get (“酒吧”);/ /返回null美元请求- >查询- >get (“酒吧”,“酒吧”);/ /返回“酒吧”

当PHP进口请求查询,它处理请求参数foo(酒吧)=酒吧在一种特殊的方式创建一个数组。所以你可以得到喷火参数,你将返回一个数组酒吧元素。但有时,你可能想要得到的值“原始”参数名称:foo(酒吧)。这是可能的“ParameterBag”getterget ()通过第三个参数:

1 2 3 4 5 6 7 8 9 10
/ /查询字符串是“? foo(酒吧)= bar”美元请求- >查询- >get (“foo”);/ /返回数组('酒吧' = > '酒吧')美元请求- >查询- >get (“foo(酒吧)”);/ /返回null美元请求- >查询- >get (“foo(酒吧)”,,真正的);/ /返回“酒吧”

最后,您还可以额外的数据存储在请求,谢谢属性财产,也是的一个实例ParameterBag。这主要是用于附加信息,属于请求,需要在应用程序中从许多不同的访问点。Symfony2的信息如何使用这个框架,明白了欧宝娱乐app下载地址阅读更多

识别一个请求

在您的应用程序,您需要一种方法来确定一个请求;大多数时候,这是通过请求的路径信息”,可以通过访问getPathInfo ()方法:

1 2 3
/ /请求到http://example.com/blog/index.php/post/hello-world/ /路径信息是“/ post / hello world”美元请求- >getPathInfo ();

模拟一个请求

而不是创建一个请求基于PHP的全局变量,你也可以模拟一个请求:

1 2 3 4 5
美元请求=请求::创建(' / hello world ',“得到”,数组(“名字”= >“法”));

create ()方法根据路径信息,创建一个请求方法和一些参数(查询参数或根据HTTP请求的方法);当然,你也可以覆盖所有其他变量(默认情况下,Symfony创建合理的默认值为所有PHP全局变量)。欧宝娱乐app下载地址

基于这样的要求,你可以通过覆盖全球的PHP变量overrideGlobals ():

1
美元请求- >overrideGlobals ();

提示

你也可以通过复制现有的查询复制()或改变一些参数调用初始化()

访问会话

如果你有一个会话请求,您可以通过访问它getSession ()方法;的hasPreviousSession ()方法告诉你如果请求包含一个会话开始在前面的请求。

访问“接受- *”标题数据

你可以很容易地访问基本数据提取接受- *头用以下方法:

访问其他数据

请求类有许多其他方法,您可以使用它们来访问请求信息。看看这个API的更多信息。

响应

一个响应对象持有的所有信息需要从给定请求发送回客户机。构造函数接受三个参数:响应内容,状态代码,和HTTP头的数组:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;美元响应=响应(“内容”,200年,数组(“内容类型”= >“text / html”));

这些信息也可以操纵响应对象创建后:

1 2 3 4 5 6
美元响应- >setContent (“Hello World”);/ / ResponseHeaderBag头公共属性美元响应- >- >集(“内容类型”,“文本/普通”);美元响应- >setStatusCode (404年);

当设置内容类型的反应,你可以设置字符集,但最好是通过setCharset ()方法:

1
美元响应- >setCharset (“iso - 8859 - 1”);

注意,默认情况下,Symfony假定你的反应欧宝娱乐app下载地址是用utf - 8编码。

发送响应

在发送响应之前,您可以确保它符合HTTP规范通过调用准备()方法:

1
美元响应- >准备(美元请求);

然后发送响应给客户端调用一样简单send ():

1
美元响应- >send ();

设置cookie

饼干可以尽管操纵的响应公共属性:

1 2 3
使用欧宝娱乐app下载地址\组件\HttpFoundation\饼干;美元响应- >- >setCookie (饼干(“foo”,“酒吧”));

setCookie ()方法取的一个实例饼干作为参数。

你可以明确一个cookie通过clearCookie ()方法。

管理HTTP缓存

响应类具有一组功能丰富的方法来操作相关的HTTP头信息缓存:

setCache ()方法可用于设置最常用的一个方法调用的缓存信息:

1 2 3 4 5 6 7 8
美元响应- >setCache (数组(“etag”= >“六边形abcdef”,“last_modified”= >\ DateTime (),“max_age”= >600年,“s_maxage”= >600年,“私人”= >,“公共”= >真正的));

检查如果响应验证器(ETag,last - modified)匹配客户机请求中指定一个条件值,使用isNotModified ()方法:

1 2 3
如果(美元响应- >isNotModified (美元请求)){美元响应- >send ();}

如果响应不修改,它设置状态代码304,消除实际的响应内容。

重定向用户

重定向客户端到另一个URL,您可以使用RedirectResponse类:

1 2 3
使用欧宝娱乐app下载地址\组件\HttpFoundation\RedirectResponse;美元响应=RedirectResponse (“http://example.com/”);

创建一个JSON响应

可以通过创建任何类型的反应响应类通过设置正确的内容和标题。一个JSON响应可能会看起来像这样:

1 2 3 4 5 6 7
使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;美元响应=反应();美元响应- >setContent (json_encode (数组(“数据”= >123年)));美元响应- >- >集(“内容类型”,“application / json”);

会话

TBD——这部分还没有写,因为它可能会重构很快在Symfony 2.1。欧宝娱乐app下载地址

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。