Custom Eloquent Builder ve Global Scope Geliştirme Teknikleri
Custom Eloquent Builder ve Global Scope Geliştirme Teknikleri
1. Konunun Mimari Önemi ve Temel Çalışma Prensibleri
Laravel’ın Eloquent ORM’si, PHP geliştiriciler için güçlü bir araçtır. Custom Eloquent Builder ve Global Scope geliştirmek, projelerdeki veri erişimini daha modüler, tekrarlanabilir ve verimli hale getirmeye yardımcı olur. Bu teknikler, sorguların daha kolay yönetilmesini, kodun yeniden kullanılmasını ve genel performansı artırır.
2. Kurumsal Projelerde Dikkat Edilmesi Gereken En İyi Pratikler (Best Practices)
- Modüler Kodlama: Custom Builder ve Global Scope’ları, projenin farklı modüllerine göre özelleştirilebilir. Bu, kodun bakımını kollaştırır ve esneklik sağlar.
- Açıklık ve Belgelendirme: Geliştirilen sınıflar ve metodlar net ve anlaşılır olmalıdır. Kullanımı kolaylaştırmak için yorumlar ve belgeler ekleyin.
- Performans Optimizasyonu: Sorguların etkinliğini artırmak için Global Scope’ları sadece gerektiğinde kullanın ve gereksiz sorguları önleyin.
- Test Etme: Her yeni özellik veya değiştirme, uygun testlerle desteklenmelidir. PHPUnit gibi test çerçevelerini kullanarak kodun doğru çalıştığını doğrulayın.
3. Gerçek Dünya Senaryolarına Uygun Kod Bloğu Örneği
Aşağıda, bir projede kullanıcının rolünü temel alan bir Global Scope örneği bulunmaktadır.
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
class RoleScope implements Scope
{
protected $role;
public function __construct($role)
{
$this->role = $role;
}
public function apply(Builder $builder, Model $model)
{
if ($this->role === 'admin') {
return;
}
$builder->where('status', 'active');
}
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Scopes\RoleScope;
class Post extends Model
{
protected static function boot()
{
parent::boot();
static::addGlobalScope(new RoleScope(auth()->user()->role));
}
}
4. Performans Optimizasyonu ve Olası Darboğazlar
Global Scope’ların etkin kullanılması, performans açısından avantaj sağlayabilir. Ancak, aşırı kullanımlar veya yanlış uygulamalar performans sorunlarına yol açabilir. Bu nedenle, sorguların etkinliğini düzenli olarak inceleyin ve gereksiz veya karmaşık sorguları optimize edin. Ayrıca, sorguları aşırı kısıtlamadan bırakmak, gerekli veriyi alamaması durumunda performans kaybına neden olabilir. Her zaman doğru dengeyi bulmak önemlidir.





