美文网首页
解析Symfony的HttpFoundation组件

解析Symfony的HttpFoundation组件

作者: wtzhang123 | 来源:发表于2020-06-06 11:09 被阅读0次

1.概述

在PHP中,我们通常使用$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION等全局变量来读取HTTP请求内容,如下:

$name = $_GET['name'];
echo $name;

这样子会出现很多问题,如果 URL 里面没有 GET 参数,PHP 会抛出一个警告,再或者没有处理xss攻击,形如
http://www.test.com/index.php?name=<script>alert(123);</script>
针对如上问题我们进行改进,

$name=$_GET['name']??'xiaoming';
echo htmlspecialchars($name);

单个变量这样做也还可以,一旦变量很多了呢?我们不可能一个个的这样转换吧,如果我们的项目再大一些,我们还会发现更多的问题

2.初识HttpFoundation

首先composer安装HttpFoundation

composer require symfony/http-foundation

基本用法

<?php
require_once __DIR__.'/../vendor/autoload.php';

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

$request = Request::createFromGlobals();
$name=$request->get('name','默认值');

现在我们就可以面向对象的方式,优雅的获得请求参数了,Request对象的功能可不止这么点,你能想到的都帮你做了

<?php
require_once __DIR__.'/../vendor/autoload.php';

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

// 请求的URI (e.g. /about)
$request->getPathInfo();

// 分别得到GET参数或POST参数
$request->query->get('foo'); // GET
$request->request->get('bar', '默认值'); // POST

// 得到服务器变量
$request->server->get('HTTP_HOST');

// 得到上传文件对象
$request->files->get('foo');

// 得到cookie值
$request->cookies->get('PHPSESSID');

// 得到http请求头信息
$request->headers->get('host');
$request->headers->get('content_type');

$request->getMethod();    // GET, POST, PUT, DELETE, HEAD
$request->getLanguages(); // 得到客户端接收语言数组

相关文章

网友评论

      本文标题:解析Symfony的HttpFoundation组件

      本文链接:https://www.haomeiwen.com/subject/ayottktx.html