 (23).png)
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!