Symfony - Pengontrol
Controller bertanggung jawab untuk menangani setiap permintaan yang masuk ke aplikasi Symfony. Pengontrol membaca informasi dari permintaan. Kemudian, membuat dan mengembalikan objek respons ke klien.
Menurut Symfony, DefaultController kelas terletak di “src/AppBundle/Controller”. Ini didefinisikan sebagai berikut.
DefaultController.php
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller {
}
Di sini HttpFoundation komponen mendefinisikan lapisan berorientasi objek untuk spesifikasi HTTP, dan FrameworkBundle berisi sebagian besar fungsionalitas kerangka "dasar".
Minta Objek
Kelas Request adalah representasi berorientasi objek dari pesan permintaan HTTP.
Membuat Objek Permintaan
Permintaan dapat dibuat menggunakan createFromGlobals() metode.
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
Anda dapat mensimulasikan permintaan menggunakan Globals. Daripada membuat permintaan berdasarkan global PHP, Anda juga dapat mensimulasikan permintaan.
$request = Request::create(
'/student',
'GET',
array('name' => 'student1')
);
Di sini create() metode membuat permintaan berdasarkan URI, metode, dan beberapa parameter.
Mengganti Objek Permintaan
Anda dapat mengganti variabel global PHP menggunakan overrideGlobals()metode. Ini didefinisikan sebagai berikut.
$request->overrideGlobals();
Mengakses Objek Permintaan
Permintaan halaman web dapat diakses di pengontrol (metode tindakan) menggunakan getRequest() metode pengontrol dasar.
$request = $this->getRequest();
Mengidentifikasi Objek Permintaan
Jika Anda ingin mengidentifikasi permintaan dalam aplikasi Anda, “PathInfo"metode akan mengembalikan identitas unik dari url permintaan. Ini didefinisikan sebagai berikut.
$request->getPathInfo();
Objek Respon
Satu-satunya persyaratan untuk pengontrol adalah mengembalikan objek Respon. Objek Respon menyimpan semua informasi dari permintaan yang diberikan dan mengirimkannya kembali ke klien.
Berikut ini adalah contoh sederhana.
Contoh
use Symfony\Component\HttpFoundation\Response;
$response = new Response(‘Default'.$name, 10);
Anda dapat menentukan objek Respon di JSON sebagai berikut.
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
Pembuat Respon
Konstruktor berisi tiga argumen -
- Isi tanggapan
- Kode status
- Larik header HTTP
Berikut ini adalah sintaks dasarnya.
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
Misalnya, Anda bisa meneruskan argumen konten sebagai,
$response->setContent(’Student details’);
Demikian pula, Anda juga bisa menyampaikan argumen lain.
Mengirim Tanggapan
Anda dapat mengirim tanggapan ke klien menggunakan send()metode. Ini didefinisikan sebagai berikut.
$response->send();
Untuk mengarahkan klien ke URL lain, Anda dapat menggunakan RedirectResponse kelas.
Ini didefinisikan sebagai berikut.
use Symfony\Component\HttpFoundation\RedirectResponse;
$response = new RedirectResponse('http://tutorialspoint.com/');
FrontController
Satu file PHP yang menangani setiap permintaan yang masuk ke aplikasi Anda. FrontController mengeksekusi perutean URL yang berbeda ke bagian aplikasi yang berbeda secara internal.
Berikut ini adalah sintaks dasar untuk 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();
Di sini in_array() fungsi mencari array untuk nilai tertentu.