PHP MİMARİSİ #11: Custom Eloquent Builder ve Global Scope Geliştirme Teknikleri

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.

NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 1188

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir