Merhaba arkadaşlar, bugün sizlere Laravel’de paket geliştirme (package development) konusunu anlatacağım. Laravel, genişletilebilir bir yapıya sahiptir ve kendi paketlerinizi oluşturarak uygulamanızı daha modüler hale getirebilirsiniz. Paketler, tekrar kullanılabilir kod parçalarıdır ve farklı projelerde kolayca kullanılabilir. Gelin, bu süreci adım adım inceleyelim.
Paket geliştirme, belirli bir işlevselliği tekrar kullanılabilir hale getirmek için kod parçalarını paketler halinde düzenleme işlemidir. Örneğin, bir ödeme entegrasyonu, bir API bağlantısı veya bir veritabanı yönetim aracı gibi işlevselliği paketler halinde geliştirebilirsiniz.
packages
adında bir klasör oluşturabilirsiniz:composer init
{ "name": "myvendor/my-package", "description": "My custom Laravel package", "type": "library", "license": "MIT", "authors": [ { "name": "Your Name", "email": "your@email.com" } ], "require": {}, "autoload": { "psr-4": { "MyVendor\\MyPackage\\": "src/" } } }
Bu dosya, paketinizin otomatik yüklenmesini sağlar ve src
dizinindeki sınıfları MyVendor\MyPackage
namespace’i altında yükler.
Paket Yapısını Oluşturma
Paketinizin yapısını oluşturmak için src
dizini altında gerekli dosyaları oluşturun. Örneğin, bir servis sağlayıcısı (service provider) oluşturalım:
mkdir src touch src/MyPackageServiceProvider.php
MyPackageServiceProvider.php Dosyası:
namespace MyVendor\MyPackage; use Illuminate\Support\ServiceProvider; class MyPackageServiceProvider extends ServiceProvider { public function boot() { // Paket yüklendiğinde yapılacak işlemler } public function register() { // Paket kaydedildiğinde yapılacak işlemler } }
Bu servis sağlayıcısı, paketinizin Laravel’e entegre edilmesini sağlar.
Paketi Laravel’e Entegre Etme
Paketinizi Laravel’e entegre etmek için composer.json
dosyanızda paketinizi tanımlayın:
"autoload": { "psr-4": { "MyVendor\\MyPackage\\": "packages/my-package/src" } }
Ardından, aşağıdaki komutu çalıştırarak otomatik yüklemeyi güncelleyin:
composer dump-autoload
Son olarak, config/app.php
dosyasında servis sağlayıcınızı kaydedin:
'providers' => [ // Diğer servis sağlayıcıları MyVendor\MyPackage\MyPackageServiceProvider::class, ],
Paketiniz içinde route ve view kullanmak için servis sağlayıcınızda gerekli tanımlamaları yapabilirsiniz.
Örneğin, bir route tanımlamak için:
public function boot() { $this->loadRoutesFrom(__DIR__.'/routes/web.php'); $this->loadViewsFrom(__DIR__.'/resources/views', 'mypackage'); }
Ardından, routes/web.php
dosyasında route’larınızı tanımlayabilirsiniz:
use Illuminate\Support\Facades\Route; Route::get('/mypackage', function () { return view('mypackage::welcome'); });
Bu route, resources/views/welcome.blade.php
dosyasını kullanır.
Paketinizi yayınlamak için önce bir GitHub deposu oluşturun ve paketinizi bu depoya yükleyin. Ardından, paketinizi Packagist’e kaydederek diğer geliştiricilerin kullanımına sunabilirsiniz.
Paketi Packagist’e Kaydetme:
composer require myvendor/my-package
komutu ile yüklenebilir.Laravel’de paket geliştirme, uygulamanızı daha modüler ve esnek hale getirmenin en etkili yollarından biridir. Eğer belirli bir işlevselliği tekrar kullanılabilir hale getirmek istiyorsanız, kendi paketlerinizi oluşturmayı mutlaka denemelisiniz. Bir sonraki yazımda, Laravel’de Docker Kullanımı: Geliştirme Ortamınızı Optimize Edin konusuna değineceğim. Görüşmek üzere!