解析Symfony的HttpFoundation組件

1.概述

在PHP中,我們通常使用$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION等全局變量來(lái)讀取HTTP請(qǐng)求內(nèi)容,如下:

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

這樣子會(huì)出現(xiàn)很多問(wèn)題,如果 URL 里面沒(méi)有 GET 參數(shù),PHP 會(huì)拋出一個(gè)警告,再或者沒(méi)有處理xss攻擊,形如
http://www.test.com/index.php?name=<script>alert(123);</script>
針對(duì)如上問(wèn)題我們進(jìn)行改進(jìn),

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

單個(gè)變量這樣做也還可以,一旦變量很多了呢?我們不可能一個(gè)個(gè)的這樣轉(zhuǎn)換吧,如果我們的項(xiàng)目再大一些,我們還會(huì)發(fā)現(xiàn)更多的問(wèn)題

2.初識(shí)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','默認(rèn)值');

現(xiàn)在我們就可以面向?qū)ο蟮姆绞?優(yōu)雅的獲得請(qǐng)求參數(shù)了,Request對(duì)象的功能可不止這么點(diǎn),你能想到的都幫你做了

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

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

// 請(qǐng)求的URI (e.g. /about)
$request->getPathInfo();

// 分別得到GET參數(shù)或POST參數(shù)
$request->query->get('foo'); // GET
$request->request->get('bar', '默認(rèn)值'); // POST

// 得到服務(wù)器變量
$request->server->get('HTTP_HOST');

// 得到上傳文件對(duì)象
$request->files->get('foo');

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

// 得到http請(qǐng)求頭信息
$request->headers->get('host');
$request->headers->get('content_type');

$request->getMethod();    // GET, POST, PUT, DELETE, HEAD
$request->getLanguages(); // 得到客戶端接收語(yǔ)言數(shù)組
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容