Symfony - Bộ điều khiển
Controller chịu trách nhiệm xử lý từng yêu cầu gửi đến ứng dụng Symfony. Bộ điều khiển đọc một thông tin từ yêu cầu. Sau đó, tạo và trả về một đối tượng phản hồi cho máy khách.
Theo Symfony, DefaultController lớp học nằm ở “src/AppBundle/Controller”. Nó được định nghĩa như sau.
DefaultController.php
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller {
}
Đây, HttpFoundation thành phần xác định một lớp hướng đối tượng cho đặc tả HTTP và FrameworkBundle chứa hầu hết các chức năng khung “cơ sở”.
Đối tượng yêu cầu
Lớp Yêu cầu là một biểu diễn hướng đối tượng của thông báo yêu cầu HTTP.
Tạo đối tượng yêu cầu
Yêu cầu có thể được tạo bằng cách sử dụng createFromGlobals() phương pháp.
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
Bạn có thể mô phỏng một yêu cầu bằng Globals. Thay vì tạo một yêu cầu dựa trên toàn cầu PHP, bạn cũng có thể mô phỏng một yêu cầu.
$request = Request::create(
'/student',
'GET',
array('name' => 'student1')
);
Đây, create() phương thức tạo một yêu cầu dựa trên một URI, một phương thức và một số tham số.
Ghi đè một đối tượng yêu cầu
Bạn có thể ghi đè các biến toàn cục PHP bằng cách sử dụng overrideGlobals()phương pháp. Nó được định nghĩa như sau.
$request->overrideGlobals();
Truy cập đối tượng yêu cầu
Yêu cầu của một trang web có thể được truy cập trong bộ điều khiển (phương pháp hành động) bằng cách sử dụng getRequest() phương pháp của bộ điều khiển cơ sở.
$request = $this->getRequest();
Xác định Đối tượng Yêu cầu
Nếu bạn muốn xác định một yêu cầu trong ứng dụng của mình, “PathInfo"phương thức sẽ trả về nhận dạng duy nhất của url yêu cầu. Nó được định nghĩa như sau.
$request->getPathInfo();
Đối tượng phản hồi
Yêu cầu duy nhất đối với bộ điều khiển là trả về một đối tượng Phản hồi. Đối tượng Phản hồi giữ tất cả thông tin từ một yêu cầu nhất định và gửi lại cho khách hàng.
Sau đây là một ví dụ đơn giản.
Thí dụ
use Symfony\Component\HttpFoundation\Response;
$response = new Response(‘Default'.$name, 10);
Bạn có thể xác định đối tượng Phản hồi trong JSON như sau.
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
Trình tạo phản hồi
Hàm tạo chứa ba đối số:
- Nội dung phản hồi
- Mã trạng thái
- Một loạt các tiêu đề HTTP
Sau đây là cú pháp cơ bản.
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
Ví dụ: bạn có thể chuyển đối số nội dung là,
$response->setContent(’Student details’);
Tương tự, bạn cũng có thể chuyển các đối số khác.
Gửi phản hồi
Bạn có thể gửi phản hồi cho khách hàng bằng cách sử dụng send()phương pháp. Nó được định nghĩa như sau.
$response->send();
Để chuyển hướng khách hàng đến một URL khác, bạn có thể sử dụng RedirectResponse lớp học.
Nó được định nghĩa như sau.
use Symfony\Component\HttpFoundation\RedirectResponse;
$response = new RedirectResponse('http://tutorialspoint.com/');
FrontController
Một tệp PHP duy nhất xử lý mọi yêu cầu gửi đến ứng dụng của bạn. FrontController thực hiện việc định tuyến các URL khác nhau đến các phần khác nhau bên trong ứng dụng.
Sau đây là cú pháp cơ bản cho FrontController.
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$request = Request::createFromGlobals();
$path = $request->getPathInfo(); // the URI path being requested
if (in_array($path, array('', '/'))) {
$response = new Response(’Student home page.');
} elseif (‘/about’ === $path) {
$response = new Response(’Student details page’);
} else {
$response = new Response('Page not found.', Response::HTTP_NOT_FOUND);
}
$response->send();
Đây, in_array() hàm tìm kiếm một mảng cho một giá trị cụ thể.