[symfony] The HttpFoundation Component
http://symfony.com/doc/current/components/http_foundation.html
---
---
---
The
Request
use Symfony\Component\HttpFoundation\Request;
1 2 3 4 5 6 7 8 | $request = new Request(
$_GET,
$_POST,
array(),
$_COOKIE,
$_FILES,
$_SERVER
);
|
Accessing Request Data¶
A Request object holds information about the client request. This information can be accessed via several public properties:
request: equivalent of$_POST;query: equivalent of$_GET($request->query->get('name'));cookies: equivalent of$_COOKIE;attributes: no equivalent - used by your app to store other data (see below);files: equivalent of$_FILES;server: equivalent of$_SERVER;headers: mostly equivalent to a subset of$_SERVER($request->headers->get('User-Agent')).
Each property is a
ParameterBag instance (or a sub-class of), which is a data holder class:request:ParameterBag;query:ParameterBag;cookies:ParameterBag;attributes:ParameterBag;files:FileBag;server:ServerBag;headers:HeaderBag.
All
ParameterBag instances have methods to retrieve and update their data:all()- Returns the parameters.
keys()- Returns the parameter keys.
replace()- Replaces the current parameters by a new set.
add()- Adds parameters.
get()- Returns a parameter by name.
set()- Sets a parameter by name.
has()- Returns
trueif the parameter is defined. remove()- Removes a parameter.
The
ParameterBag instance also has some methods to filter the input values:getAlpha()- Returns the alphabetic characters of the parameter value;
getAlnum()- Returns the alphabetic characters and digits of the parameter value;
getBoolean()- Returns the parameter value converted to boolean;
getDigits()- Returns the digits of the parameter value;
getInt()- Returns the parameter value converted to integer;
filter()- Filters the parameter by using the PHP
filter_varfunction. // the query string is '?foo=bar' $request->query->get('foo'); // returns 'bar' $request->query->get('bar'); // returns null $request->query->get('bar', 'baz'); // returns 'baz'
Simulating a Request¶
Instead of creating a request based on the PHP globals, you can also simulate a request:
1 2 3 4 5 | $request = Request::create(
'/hello-world',
'GET',
array('name' => 'Fabien')
);
|
Creating a JSON Response¶
Any type of response can be created via the
Response class by setting the right content and headers. A JSON response might look like this:1 2 3 4 5 6 7 | use Symfony\Component\HttpFoundation\Response;
$response = new Response();
$response->setContent(json_encode(array(
'data' => 123,
)));
$response->headers->set('Content-Type', 'application/json');
|
There is also a helpful
JsonResponse class, which can make this even easier:1 2 3 4 5 6 7 8 9 10 11 12 | use Symfony\Component\HttpFoundation\JsonResponse;
// if you know the data to send when creating the response
$response = new JsonResponse(array('data' => 123));
// if you don't know the data to send when creating the response
$response = new JsonResponse();
// ...
$response->setData(array('data' => 123));
// if the data to send is already encoded in JSON
$response = JsonResponse::fromJsonString('{ "data": 123 }');
|
The
JsonResponse class sets the Content-Type header to application/json and encodes your data to JSON when needed.
留言
張貼留言