เดอะ เอกสาร Drupal ในเซสชัน กล่าวถึงเซสชันที่สามารถเข้าถึงได้ผ่านวัตถุคำขอ:
เข้าถึงข้อมูลเซสชันผ่านทาง
\Symfony\Component\HttpFoundation\Request::getSession()
วิธีการซึ่ง
ส่งคืนอินสแตนซ์ของ
\Symfony\Component\HttpFoundation\Session\SessionInterface
. มากที่สุด
เมธอดที่สำคัญบน SessionInterface คือ set() get() และ remove()
อย่างไรก็ตาม ฉันยังได้ค้นพบว่ามี บริการเซสชั่น.
ในคลาสที่ฉันต้องใช้การพึ่งพาการฉีดและโดยค่าเริ่มต้นฉันไม่มีสิทธิ์เข้าถึงออบเจกต์คำขอ ฉันยังต้องเข้าถึงเซสชันผ่านคำขอหรือไม่ หรือฉันสามารถใช้ไดเรกไดเรกต์ได้หรือไม่ การโหลดคำขอแทน จากนั้นเข้าถึงเซสชันรู้สึกเหมือนเพิ่มค่าใช้จ่าย
ฉันได้ลองรหัสด้านล่างซึ่งดูเหมือนว่าจะทำงานได้ดี แล้วทำไมตัวอย่างส่วนใหญ่และแม้แต่เอกสารประกอบยังคงแสดงวิธีการร้องขอ ฉันขาดอะไรไปหรือมีความเสี่ยงในแนวทางนี้หรือไม่?
คลาส MyForm ขยาย FormBase {
/**
* เซสชั่น
*
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
ป้องกัน $session;
/**
*
* @param \Symfony\Component\HttpFoundation\Session\Session $session
* เซสชั่น
*/
ฟังก์ชั่นสาธารณะ __construct ($ เซสชัน) {
$this->session = $เซสชัน;
}
/**
* {@inheritdoc}
*/
สร้างฟังก์ชันคงที่สาธารณะ (ContainerInterface $container) {
ส่งคืนค่าคงที่ใหม่ (
$container->get('เซสชั่น')
);
}
ฟังก์ชันฟังก์ชันบางอย่าง () {
$this->session->get('ค่า');
$this->session->set('value', 'somevalue');
}
}