Bugün Patika isimli PHP tabanlı rota yönetim kütüphanesini yayınladım. Bu blog yazısında elimden geldiğince paketi tanıtmaya çalışacağım.
PHP'de bir çok farklı ve oldukça başarılı routing kütüphaneleri bulunuyor. Bunlar hakkında daha önce Fast Route Kütüphanesi ve Symfony/Routing ile Rotalarınızı Yönetin başlıkları altında yazılar yayımlamıştım. Ancak bu her iki güzide kütüphanede de rotaları el ile tanımlıyor olmak bazı durumlarda beni çok yoruyordu.
Özellikle API tasarlarken, elimden geldiğinde hafif ve rotalara göre doğrudan beni Controller sınıflarına iletecek bir yapıya ihtiyacım vardı. Önce bu yapıyı kendim kurdum, kullandım ve daha sonra bunun bir paket olmasının güzel olabileceğini düşündüm. Önümüzdeki günlerde gerçekten bir ihtiyaç mı değil mi göreceğiz. :)
Paketin kurulumları ve konfigürasyonunu dokümantasyon üzerinden görmeniz mümkün. Çalışmaya hazır hale getirdikten sonra Patika istek yapılan URL'yi çözümleyerek, bu URL'yi bir namespace'e dönüştürüyor. Eğer namespace altında bir sınıf varsa bu sınıfı parametrelerle birlikte çağırıyor. Eğer yoksa Controller ya da Method bulunamadı diyerek 2 farklı Exception altında hata veriyor. Böylelikle rota yazmanıza gerek kalmıyor.
GET localhost/users/all
# Namespace: App\Controllers\Users
# Method: all
# Arguments: []
Bu bölümde rotayı PHP'nin izin verdiği ölçüde uzatma imkanımız var.
GET localhost/admin/manager/users/all
# Namespace: App\Controllers\Admin\Manage\Users
# Method: all
# Arguments: []
GET localhost/admin/manage/users/get/1
# Namespace: App\Controllers\Admin\Manage\Users
# Method: get
# Arguments: [1]
namespace App\Controllers\Admin\Manage;
class Users {
public function get($id)
{
echo $id;
}
}
GET localhost/admin/manage/users/getByArgument/1/2/3/foo/bar
# Namespace: App\Controllers\Admin\Manage\Users
# Method: get
# Arguments: [1, 2, 3, 'foo', 'bar']
namespace App\Controllers\Admin\Manage;
class Users {
public function get($one, $two, $three, $foo, $bar)
{
echo $id;
}
}
```