Các Tài liệu Drupal về phiên đề cập rằng các phiên có thể được truy cập thông qua đối tượng Yêu cầu:
Dữ liệu phiên được truy cập thông qua
\Symfony\Component\HttpFoundation\Request::getSession()
phương pháp mà
trả về một thể hiện của
\Symfony\Component\HttpFoundation\Session\SessionInterface
. nhiều nhất
các phương thức quan trọng trên SessionInterface là set(), get(), và remove().
Tuy nhiên tôi cũng đã phát hiện ra có một dịch vụ phiên.
Trong một lớp mà tôi cần sử dụng phép nội xạ phụ thuộc và theo mặc định, tôi không có quyền truy cập vào đối tượng Yêu cầu, tôi vẫn cần truy cập phiên thông qua yêu cầu hay tôi có thể sử dụng trực tiếp không? Thay vào đó, tải Yêu cầu và sau đó truy cập phiên có cảm giác như thêm chi phí hoạt động.
Tôi đã thử mã bên dưới, mã này có vẻ hoạt động tốt. Vậy thì tại sao hầu hết các ví dụ và thậm chí cả tài liệu vẫn thể hiện cách Yêu cầu? Tôi đang thiếu thứ gì đó hay có rủi ro trong phương pháp này không?
lớp MyForm mở rộng FormBase {
/**
* Phiên.
*
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
phiên $ được bảo vệ;
/**
*
* @param \Symfony\Component\HttpFoundation\Session\Session $session
* Phiên.
*/
hàm công khai __construct($session) {
$this->session = $session;
}
/**
* {@inheritdoc}
*/
tạo hàm tĩnh công khai (ContainerInterface $container) {
trả về tĩnh mới (
$container->get('session')
);
}
hàm somefunction() {
$this->session->get('value');
$this->session->set('value', 'somevalue');
}
}