Laravel: Paket Geliştirme

Giriş

Paketler Laravel’e ek işlevler eklemek için öncelikli yoldur.

Farklı tiplerde paketler vardır. Bazı paketler kendi başına, yani Laravel ile yalnızca değil herhangi bir frameworkle çalışabilir. Tüm kendi başına çalışan paketler Laravel ile kullanılabilir.

Diğer paketler Laravel ile birlikte kullanılmak için yapılan paketlerdir. Bu paketler, Laravel uygulamanızın özelliklerini arttıran yönlendiriciler (route), kontrolcüler (controller), görünüm (view) ve yapılandırmalar olabilir. Bu makalede Laravel için yapılmış olan paketleri açıklanacak.

Servis Sağlayıcılar (Service Providers)

Servis sağlayıcılar Laravel ile paketinizin bağlantı noktasıdır. Servis sağlayıcı, paketin Laravel’in servis taşıyıcısına bağlanması ve paketlerin kaynaklarının yüklenmesinden sorumludur.

Servis sağlayıcı register ve boot metodlarını içeren Illuminate\Support\ServiceProvider sınıfından genişletilir (extend edilir). Ana Servis Sağlayıcı (ServiceProvider) illuminate/support composer paketinden konumlandırılmıştır.

Yönlendirme (Routing)

Paketize yönlendiricileri tanımlamak için basitçe paketinizin servis sağlacısının boot metoduna require ile dahil edin. Yönlendirici dosyanızın içinde tipik Laravel uygulamasında yapabilecğeiniz yönlendirme kayıtları için Route facade kullanabilirsiniz.

Kaynaklar (Resources)

Görünümler

Paketinizin görünümlerini Laravel ile kullanmanız için bu görünümlerin nerede olduğunu Laravel’e göstermeniz gerekir. Bunu servis sağlayıcının loadViewsFrom metodu kullanılarak yapılabilir. loadViewsFrom metodu iki argüman kabul eder: görünüm şablonlarının yeri ve paketin ismi. Örneğin, paketinizin ismi “courier” ise servis sağlayıcınızın boot metoduna aşağıdaki gibi ekleyin.

Paket görünümümleri package::view ikili iki nokta üst üste yazılımı ile tanımlanır. Yani, courier paketinden admin görünümünü yüklemek isterseniz:

Paket Görünümlerinin Üzerine Yazma

loadViewsFrom metodunu kullandığınızda, Laravel aslında iki konum kaydeder: uygulamanın resources/view/vendor klasörü ve sizin belirleyeceğiniz konum. Yani courier örneğinde: bitr paket görünümü isteği yapıldığında, Laravel ilk olarak geliştiricinin resources/views/vendor/courier içinde özel bir versiyonunun olup olmadığına bakar. Sonra özelleştme yoksa, Laravel paket görünümünü loadViewsFrom ile belirtilen yerde yerde arar. Bu son kullanıcın paket görünümlerinin özelleştirmeyi kolaylaştırır.

Görünümlerin Yayınlanması

Görünümlerinizin uygulamanın resources/views/vendor klasröü içinde yayınlanmasını istiyorsanız, servis salayıcınızın publishes metodunu kullanmalısınız. publishes metodu paket görünüm yolları ve onlara uyan yayın konumlarını gösteren dizi argüman kabul eder.

Şimdi, kullanıcınar vendor:publish Artisan komutunu çalıştırdığında, paketinizin görünümleri belirtilen yola koplanmış olacak.

Çeviriler (Translations)

Eğer pakeriniz çeviri dosyaları içeriyorsa Laravel’in onları nasıl yükleyeceğini belirtmek için loadTranslationsFrom metodunu kullanabilirsiniz. Örneğin, paket isminiz “courier” ise, servis sağlayıcınızın boot metoduna aşağıdakini eklemelisiniz.

Paket çevirileri package::file.line ikili iki nokta üst üste yazılımı ile tanımlanır. Yani courier paketinizin messages dosyasındaki welcome satırını şu şekilde yükleyebilirsiniz:

Ayarlar (Configuration)

Tipik olarak paketinizin yapılandırma dosyasını uygulamanın kendi config kalsöründe istersiniz. Bu kullanıcının varsayılan ayarları kolayca düzenlemsine izin verir. Yapılandırma dosyasını yayınlamak için publishes metodunu aşağıdaki şekilde kullanın.

Şimdi, kullanıcı paketinzi Laravel’in vendor:publish komutuyla çalıştırdığında, dosyanız dosyanız belirtilen adrese kopyalanacak. Yapılandırmanız yayınlandığında, diğer yapılandırmalar gibi ulaşılabilir.

Varsayılan Paket Ayarları

Sizin paket yapılandırmalarınızı uygulamanızla birleştirmek isteyebilrisiniz. Yapılandırmayı birleştirmek için servis sağlayıcındaki register metodu içinde mergeConfigFrom metodunu kullanın.

Erişilebilir Dosyalar

Paketinizde Javascript, CSS ve resimleri olabilir. Bunları uygulamanızın public klasröründe yayınlamak için servis saplayıcınızın publishes metodunu kullanın.

Şimdi, kullanıcılar peketinizin vendor::publish komutunu çalıştırdığında, sizin ulaşılabilir dosyalarınız nelirtilen konuma kpyalanacak. Paket güncellendiğinde bu dosyaların üzerine yazmak isteyeceksiniz, bu durumda --force etiketini kullanabilirsiniz.

Dosyalarınızın herzaman güncel olmasını istiyorsanız composer.json dossyanızdaki post-update-cmd listesine bu komutu ekleyebilirsiniz.