Çoklu Uygulama
Bazen bir proje birden fazla alt projeye bölünebilir, örneğin bir alışveriş sitesi, ana alışveriş projesi, alışveriş sitesi API arayüzü ve alışveriş sitesi yönetim paneli olarak üç alt projeye ayrılabilir; bunlar aynı veritabanı yapılandırmasını kullanır.
webman size uygulama dizinini şöyle planlama imkanı tanır:
app
├── shop
│ ├── controller
│ ├── model
│ └── view
├── api
│ ├── controller
│ └── model
└── admin
├── controller
├── model
└── view
http://127.0.0.1:8787/shop/{kontrolör}/{metot}
adresine eriştiğinizde app/shop/controller
altındaki kontrolör ve metot erişilir.
http://127.0.0.1:8787/api/{kontrolör}/{metot}
adresine eriştiğinizde app/api/controller
altındaki kontrolör ve metot erişilir.
http://127.0.0.1:8787/admin/{kontrolör}/{metot}
adresine eriştiğinizde app/admin/controller
altındaki kontrolör ve metot erişilir.
webman'de, uygulama dizinini böyle de planlayabilirsiniz.
app
├── controller
├── model
├── view
│
├── api
│ ├── controller
│ └── model
└── admin
├── controller
├── model
└── view
Bu durumda, http://127.0.0.1:8787/{kontrolör}/{metot}
adresine eriştiğinizde app/controller
altındaki kontrolör ve metot erişilir. Eğer yol api
veya admin
ile başlıyorsa, ilgili dizindeki kontrolör ve metot erişilir.
Çoklu uygulamalarda sınıf isim alanları psr4
standardına uymalıdır; örneğin app/api/controller/FooController.php
dosyası aşağıdaki gibi olabilir:
<?php
namespace app\api\controller;
use support\Request;
class FooController
{
}
Çoklu Uygulama Araçları Yapılandırması
Bazen farklı uygulamalar için farklı araçlar yapılandırmak isteyebilirsiniz; örneğin api
uygulamasının bir çapraz alan aracına ihtiyacı olabilirken, admin
uygulaması için bir yönetici girişi kontrol aracı gerekebilir, bu nedenle config/midlleware.php
yapılandırması aşağıdakine benzer olabilir:
return [
// Küresel araçlar
'' => [
support\middleware\AuthCheck::class,
],
// api uygulaması araçları
'api' => [
support\middleware\AccessControl::class,
],
// admin uygulaması araçları
'admin' => [
support\middleware\AdminAuthCheck::class,
support\middleware\SomeOtherClass::class,
],
];
Yukarıdaki araçlar mevcut olmayabilir, burada yalnızca uygulamaya göre nasıl yapılandırılacağına dair bir örnek verilmiştir.
Araçların işleme sırası Küresel araçlar
->Uygulama araçları
şeklindedir.
Araç geliştirme için araç bölümü'ne bakabilirsiniz.
Çoklu Uygulama Hata İşleme Yapılandırması
Aynı şekilde, farklı uygulamalar için farklı hata işleme sınıfları yapılandırmak isteyebilirsiniz; örneğin shop
uygulamasında bir hata meydana geldiğinde, kullanıcıya dostça bir bilgilendirme sayfası sağlamak isteyebilirsiniz; api
uygulamasında bir hata oluştuğunda ise bir sayfa değil, bir json dizesi döndürmek istersiniz. Farklı uygulamalar için farklı hata işleme sınıfı yapılandırma dosyası config/exception.php
aşağıdaki gibi olabilir:
return [
'shop' => support\exception\Handler::class,
'api' => support\exception\ApiHandler::class,
];
Araçlardan farklı olarak, her uygulama yalnızca bir hata işleme sınıfı yapılandırabilir.
Yukarıdaki hata işleme sınıfı mevcut olmayabilir, burada yalnızca uygulamaya göre nasıl yapılandırılacağına dair bir örnek verilmiştir.
Hata işleme geliştirme için hata işleme bölümü'ne bakabilirsiniz.