Symfony - คอนโทรลเลอร์
ผู้ควบคุมรับผิดชอบในการจัดการคำขอแต่ละรายการที่เข้ามาในแอปพลิเคชัน Symfony ผู้ควบคุมอ่านข้อมูลจากคำขอ จากนั้นสร้างและส่งคืนวัตถุตอบกลับไปยังไคลเอนต์
อ้างอิงจาก Symfony DefaultController ชั้นเรียนตั้งอยู่ที่ “src/AppBundle/Controller”. มีกำหนดดังนี้
DefaultController.php
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller {
}
ที่นี่ HttpFoundation คอมโพเนนต์กำหนดเลเยอร์เชิงวัตถุสำหรับข้อกำหนด HTTP และ FrameworkBundle มีฟังก์ชันการทำงานของเฟรมเวิร์ก "ฐาน" เป็นส่วนใหญ่
ขอวัตถุ
คลาสคำขอเป็นการแสดงข้อความคำร้อง HTTP ในเชิงวัตถุ
การสร้างวัตถุคำขอ
สามารถสร้างคำขอโดยใช้ createFromGlobals() วิธี.
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
คุณสามารถจำลองคำขอโดยใช้ Globals แทนที่จะสร้างคำขอตาม PHP globals คุณยังสามารถจำลองคำขอได้อีกด้วย
$request = Request::create(
'/student',
'GET',
array('name' => 'student1')
);
ที่นี่ create() เมธอดสร้างคำขอตาม URI วิธีการและพารามิเตอร์บางตัว
การลบล้างวัตถุคำขอ
คุณสามารถแทนที่ตัวแปรส่วนกลางของ PHP ได้โดยใช้ไฟล์ overrideGlobals()วิธี. มีกำหนดดังนี้
$request->overrideGlobals();
การเข้าถึงวัตถุคำขอ
คำขอของหน้าเว็บสามารถเข้าถึงได้ในคอนโทรลเลอร์ (วิธีการดำเนินการ) โดยใช้ getRequest() วิธีการของตัวควบคุมฐาน
$request = $this->getRequest();
การระบุวัตถุคำขอ
หากคุณต้องการระบุคำขอในใบสมัครของคุณ “PathInfo"วิธีการจะส่งคืนข้อมูลประจำตัวที่ไม่ซ้ำกันของ url คำขอ มีกำหนดดังนี้
$request->getPathInfo();
วัตถุตอบสนอง
ข้อกำหนดเดียวสำหรับคอนโทรลเลอร์คือการส่งคืนอ็อบเจ็กต์การตอบสนอง อ็อบเจ็กต์การตอบกลับเก็บข้อมูลทั้งหมดจากคำร้องขอที่กำหนดและส่งกลับไปยังไคลเอนต์
ต่อไปนี้เป็นตัวอย่างง่ายๆ
ตัวอย่าง
use Symfony\Component\HttpFoundation\Response;
$response = new Response(‘Default'.$name, 10);
คุณสามารถกำหนดอ็อบเจกต์การตอบสนองใน JSON ได้ดังนี้
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
ตัวสร้างการตอบสนอง
ตัวสร้างมีสามอาร์กิวเมนต์ -
- เนื้อหาตอบกลับ
- รหัสสถานะ
- อาร์เรย์ของส่วนหัว HTTP
ต่อไปนี้เป็นไวยากรณ์พื้นฐาน
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
ตัวอย่างเช่นคุณสามารถส่งผ่านอาร์กิวเมนต์เนื้อหาเป็น
$response->setContent(’Student details’);
ในทำนองเดียวกันคุณสามารถส่งผ่านข้อโต้แย้งอื่น ๆ ได้เช่นกัน
การส่งการตอบกลับ
คุณสามารถส่งการตอบกลับไปยังไคลเอนต์โดยใช้ไฟล์ send()วิธี. มีกำหนดดังนี้
$response->send();
ในการเปลี่ยนเส้นทางไคลเอ็นต์ไปยัง URL อื่นคุณสามารถใช้ไฟล์ RedirectResponse ชั้นเรียน
มีกำหนดดังนี้
use Symfony\Component\HttpFoundation\RedirectResponse;
$response = new RedirectResponse('http://tutorialspoint.com/');
FrontController
ไฟล์ PHP เดียวที่จัดการทุกคำขอที่เข้ามาในแอปพลิเคชันของคุณ FrontController ดำเนินการกำหนดเส้นทางของ URL ที่แตกต่างกันไปยังส่วนต่างๆภายในของแอปพลิเคชัน
ต่อไปนี้เป็นไวยากรณ์พื้นฐานสำหรับ 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();
ที่นี่ in_array() ฟังก์ชันค้นหาอาร์เรย์สำหรับค่าเฉพาะ