Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Mengatur Rute di aplikasi PHP yang menggunakan komponen Sympony Routing

Advertisement
by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by ibnuhadis83 (you can also view the original English article)

Hari ini, kita akan pergi melalui Komponen Simfony Routing, yang memungkinkan Anda untuk mengatur rute di aplikasi PHP Anda.

Apa itu komponen Routing Symfony?

Routing Symfony komponen adalah rute komponen sangat populer yang disesuaikan oleh beberapa kerangka dan menyediakan banyak fleksibilitas jika Anda ingin mengatur rute di aplikasi PHP Anda.

Jika Anda telah membangun aplikasi kostum PHP dan mencari perpustakaan yang kaya rute fitur, komponen Routing Symfony adalah lebih dari layak lihat. Hal ini juga memungkinkan Anda untuk menentukan rute untuk aplikasi Anda dalam YAML format.

Dimulai dengan instalasi dan konfigurasi, kita akan pergi melalui contoh-contoh nyata untuk menunjukkan berbagai pilihan komponen telah untuk rute konfigurasi. Dalam artikel ini, Anda akan mempelajari:

  • Instalasi dan konfigurasi
  • cara mengatur rute dasar
  • Cara memuat rute dari YAML file
  • cara menggunakan rute all in one

Instalasi dan konfigurasi

Dalam bagian ini, kita akan menginstal perpustakaan yang diperlukan untuk mengatur routing di aplikasi PHP Anda. Saya berasumsi bahwa Anda telah menginstal komposer di sistem Anda karena kita akan perlu untuk menginstal Perpustakaan diperlukan yang tersedia di Packagist.

Setelah Anda memasang komposer, pergi ke depan dan menginstal komponen inti Rute menggunakan perintah berikut.

Meskipun rute komponen itu sendiri untuk menyediakan fitur rute yang lengkap dalam aplikasi Anda, kami akan pergi ke depan dan menginstal beberapa komponen lainnya serta untuk membuat hidup kita lebih mudah dan memperkaya fungsionalitas inti routing yang sudah ada.

Untuk mulai dengan, kita akan pergi ke depan dan menginstal komponen HttpFoundation, yang menyediakan berorientasi objek pembungkus untuk PHP variabel global dan fungsi-fungsi yang terkait dengan respon. Memastikan bahwa Anda tidak perlu mengakses variabel global seperti $_GET, $_POST dan sejenisnya secara langsung.

Selanjutnya, jika Anda ingin menentukan rute aplikasi Anda dalam format yaml bukan kode PHP, itu adalah komponen YAML yang datang untuk menyelamatkan karena membantu Anda untuk mengkonversi YAML susunan tali PHP dan sebaliknya.

Akhirnya, kita akan menginstal komponen Configurasi, yang menyediakan beberapa utilitas kelas untuk menginisialisasi dan berurusan dengan nilai-nilai konfigurasi yang didefinisikan dalam berbagai jenis file seperti YAML, INI, XML, dll. Dalam kasus kami, kami akan menggunakannya untuk memuat rute dari YAML file.

Jadi itulah bagian instalasi, tetapi bagaimana Anda menggunakannya? Pada kenyataannya, itu adalah hanya masalah termasuk file autoload.php yang dibuat oleh komposer dalam aplikasi Anda, seperti yang ditunjukkan dalam potongan berikut.

Mengatur rute dasar

Di bagian sebelumnya, kami pergi melalui instalasi rute komponen yang diperlukan. Sekarang, Anda siap untuk mengatur rute di aplikasi PHP Anda segera.

Mari kita pergi ke depan dan membuat basic_routes.php file dengan isi sebagai berikut.

Mengatur rute menggunakan komponen Symfony Routing biasanya berjalan melalui serangkaian langkah-langkah sebagai berikut.

  • Menginisialisasi objek Route untuk masing-masing rute aplikasi Anda.
  • Menambahkan semua Route objek ke objek RouteCollection.
  • Menginisialisasi objek RequestContext yang memegang informasi konteks permintaan.
  • Menginisialisasi objek UrlMatcher dengan melewati objek RouteCollection dan RequestContext objek.

Menginisialisasi objek rute untuk rute yang berbeda

Marilah lakukan dan menentukan rute foo cukup mendasar.

Argumen pertama konstruktor Route jalan URI, dan argumen kedua adalah susunan atribut kustom yang Anda inginkan untuk kembali ketika rute tertentu ini cocok. Biasanya, ini akan menjadi kombinasi kontrol dan metode yang Anda ingin panggilan bila rute ini diminta.

Selanjutnya, mari kita lihat pada rute parameterized.

Rute di atas dapat mencocokkan URI seperti foo/1, foo/123 dan sejenisnya. Harap dicatat bahwa kami telah dibatasi parameter {id} nilai-nilai numerik hanya, dan maka itu tidak akan sesuai URI seperti foo/bar sejak parameter {id} disediakan sebagai string

Menambahkan objek semua rute ke objek RouteCollection

Langkah berikutnya adalah untuk menambahkan rute benda-benda yang kita sudah diinisialisasi di bagian sebelumnya ke objek RouteCollection.

Seperti yang Anda lihat, sudah cukup sederhana karena Anda hanya perlu menggunakan metode Add objek RouteCollection untuk menambahkan rute objek. Argumen pertama metode Add adalah nama dari rute, dan argumen kedua adalah obyek rute itu sendiri.

Menginisialisasi objek RequestContext

Selanjutnya, kita perlu untuk menganalisa objek RequestContext, yang menyimpan informasi konteks permintaan saat ini. Kita akan perlu objek ini ketika kita menginisialisasi objek UrlMatcher seperti yang kita akan pergi melalui itu dalam sekejap.

Menginisialisasi objek UrlMatcher

Akhirnya, kita perlu untuk menginisialisasi objek UrlMatcher rute dan konteks informasi.

Sekarang, kami memiliki semua rute yang cocok untuk kedepannya.

Bagaimana untuk mencocokkan rute

Ini adalah metode pertandingan UrlMatcher objek yang memungkinkan Anda untuk menyesuaikan setiap rute terhadap satu set standar rute.

Metode Match mengambil URI sebagai argumen pertama dan mencoba untuk mencocokkan terhadap standar rute. Jika rute ditemukan, mengembalikan atribut kustom yang terkait dengan rute itu. Di sisi lain, itu throws pengecualian ResourceNotFoundException jika tidak ada rute yang terkait dengan URI saat ini.

Dalam kasus kami, kami menyediakan URI saat ini dengan mengambil itu dari $context objek. Jadi, jika Anda mengakses http://your-domain/basic_routes.php/foo URL, $context->getPathInfo() kembali foo, dan kita sudah didefinisikan rute untuk foo URI, jadi itu harus kembali kami berikut.

Sekarang, mari kita pergi ke depan dan menguji rute parameterized dengan mengakses http://your-domain/basic_routes.php/foo/123 URL.

Ini berhasil jika Anda dapat melihat bahwa id parameter terikat dengan nilai yang sesuai 123.

Selanjutnya, mari kita coba untuk mengakses rute tidak ada seperti http://your-domain/basic_routes.php/unknown-route, dan Anda akan melihat pesan berikut.

Jadi itu adalah bagaimana Anda bisa mencari rute menggunakan metode pertandingan.

Selain itu, Anda juga bisa menggunakanrute komponen untuk menghasilkan link dalam aplikasi Anda. Disediakan RouteCollection dan RequestContext objek, UrlGenerator memungkinkan Anda untuk membangun link untuk rute tertentu.

Argumen pertama gerenete metode adalah nama rute, dan argumen kedua adalah susunan yang mungkin berisi parameter jika rute parameterized. Kode di atas harus menghasilkan /basic_routes.php/foo/123 URL.

Beban Rute dari YAML File

Di bagian sebelumnya, kami membangun rute kustom  kami menggunakan Route dan RouteCollection objek. Bahkan, Rute komponen yang menawarkan cara yang berbeda yang Anda dapat memilih ke rute instan. Anda dapat memilih dari berbagai loader seperti YamlFileLoader, XmlFileLoader, dan PhpFileLoader.

Dalam bagian ini, kita akan pergi melalui loader YamlFileLoader untuk melihat bagaimana memuat rute dari YAML file.

File YAML rute

Pergilah dan membuat routes.yaml file dengan isi sebagai berikut.

Contoh File

Selanjutnya, pergi ke depan dan membuat file load_routes_from_yaml.php dengan isi sebagai berikut.

Satu-satunya hal yang berbeda dalam hal ini adalah cara kita menginisialisasi rute!

Kami telah menggunakan YamlFileLoader loader untuk memuat rute dari file routes.yaml, bukan inisialisasi langsung di PHP itu sendiri. Selain itu, semuanya adalah sama dan harus menghasilkan hasil yang sama seperti yang file basic_routes.php.

Rute satu untuk semua 

Terakhir dalam bagian ini, kita akan pergi melalui Router kelas, yang memungkinkan Anda untuk mengatur routing cepat dengan lebih sedikit baris kode.

Pergilah dan membuat file all_in_one_router.php dengan isi sebagai berikut.

Semuanya adalah hampir sama, kecuali bahwa kita sudah dipakai objek Router dengan yang dibutuhkan.

Dengan itu di tempat, Anda dapat langsung menggunakan metode Match objek Router untuk pemetaan rute.

Juga, Anda akan perlu menggunakan metode getRouteCollection objek Router untuk mengambil rute.

Kesimpulan

Pergilah dan mengeksplorasi pilihan lain yang tersedia dalam komponen Routing-saya akan senang mendengar pikiran Anda!

Hari ini, kami mengeksplorasi Komponen Symfony Routing, yang membuat pelaksanaan rute di aplikasi PHP angin. Sepanjang jalan, kami membuat beberapa contoh untuk menunjukkan berbagai aspek dari rute komponen.

Saya berharap bahwa Anda menikmati artikel ini, dan merasa bebas untuk memposting pemikiran Anda menggunakan feed di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.