Dengan kerangka kerja PHP, mengapa konsep “rute” digunakan?

31

Alasan saya menanyakan hal ini adalah karena bukankah skrip PHP rute? Misalnya, jika Anda memiliki article.php maka rute Anda cukup http://mysite.com/article.php .

Mengapa lebih jauh mengaburkan konsep rute ketika sudah ada sebagai file sederhana?

Ryan
sumber

Jawaban:

44

Untuk memahami apa yang dilakukan router, Anda harus terlebih dahulu memahami apa itu mesin penulisan ulang. Dari artikel Wikipedia (penekanan pada saya):

Mesin penulisan ulang adalah perangkat lunak yang mengubah tampilan URL web (penulisan ulang URL). URL yang ditulis ulang (kadang-kadang dikenal sebagai URL pendek, mewah, atau ramah mesin pencari - SEF) digunakan untuk menyediakan tautan yang lebih pendek dan lebih relevan ke halaman web. Teknik ini menambahkan tingkat pemisahan antara file yang digunakan untuk menghasilkan halaman web dan URL yang disajikan kepada Dunia .

Saat mesin penulisan ulang digunakan, Anda tidak memiliki korelasi 1: 1 antara URL dan skrip PHP. Contoh dari artikel yang sama:

http://example.com/wiki/index.php?title=Page_title

dapat ditulis ulang sebagai:

http://example.com/wiki/Page_title

Ada berbagai manfaat menggunakan teknik ini. Karena PHP biasanya dipasangkan dengan Apache, mesin penulisan ulang yang paling umum digunakan adalah mod_rewrite dari Apache .

Jika Anda ingin URL yang ditulis ulang, Anda memerlukan semacam perutean, karena perutean adalah proses mengambil URL, memecahnya menjadi komponen-komponen dan memutuskan apa yang sebenarnya akan dipanggil oleh skrip. The halaman dokumentasi untuk router standar dari Zend Framework menjelaskan proses sebagai:

Routing adalah proses mengambil titik akhir URI (bagian URI yang muncul setelah URL dasar) dan menguraikannya menjadi parameter untuk menentukan modul, pengontrol, dan tindakan pengontrol mana yang harus menerima permintaan.

Sebagian besar kerangka kerja PHP saat ini didasarkan pada pola MVC , dan pada kerangka kerja MVC prosesnya berlangsung seperti ini * :

  1. Browser diarahkan ke URL,
  2. Server web menangkap permintaan dan meneruskannya ke titik masuk umum, biasanya index.phpskrip,
  3. index.php mendapatkan URL dan memulai proses perutean.
  4. URL didekomposisi menjadi parameter, di mana yang pertama adalah pengontrol, yang kedua adalah metode tindakan, dan sisanya dianggap sebagai parameter dinamis,
  5. Jika kelas pengontrol yang cocok dengan parameter pertama ada, objek pengontrol akan dipakai,
  6. Metode aksi yang biasanya merupakan fungsi dari objek pengontrol disebut dan kembalinya adalah apa yang sebenarnya dikembalikan ke browser.

Parameter pencocokan untuk pengontrol dan metode biasanya menggunakan pencocokan melalui ekspresi reguler untuk dapat menangani pola rute yang kompleks dan dinamis, yang dikenal sebagai rute. Contoh rute yang bagus dapat ditemukan di halaman dokumentasi URI Routing CodeIgniter :

$ route ['jurnal'] = "blog";

$ route ['blog / joe'] = "blog / pengguna / 34";

$ route ['product / (: any)'] = "catalog / product_lookup";

$ route ['product / (: num)'] = "catalog / product_lookup_by_id / $ 1";

The $routeArray memegang pola sebagai kunci dan tindakan yang dihasilkan sebagai nilai-nilai dalam controller/action_method/dynamic_parameterformat yang.

* Ini tidak dimaksudkan sebagai deskripsi proses kanonik, hanya penjelasan yang terlalu disederhanakan.

yannis
sumber
15
Seharusnya ada lencana untuk menggambarkan router mvc tanpa menggunakan turunan dari "pengiriman" ...
yannis