Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Selamlar herkese iyi çalışmalar dilerim.

Yıllardır Codeigniter 3 ile daha sonrada codeigniter 4 ile projeler geliştirdim. İki yüksek trafikli projede Ci3 ve Ci4 ile hiç sorun yaşamadım.

Şu anda Orm ve elequent için laravel tercih etmeyi düşünüyorum ama bazı endişelerim oluştu.

Codeigniter kendi içinde laravelin size sunduğu bir çok özelliği ve kolaylığı sunmuyor. Tabir caizse al sana mvc yapısı bu. Sana ne lazımsa git çağır kullan diyor. Zaten bu yüzden çok hafif. Yani projenin tamamen controlü sizde. neyin nerede nasıl çalıştığı çok basit bir şekilde anlaşılıyor.

Ancak laravel dünyasına geldiğimde kod yazmak çok kolay, çünkü kullanılabilecek bir çok şey arkada zaten hazır. Ancak laravelde sihir dediğiniz olay çok fazla. Yani buzdağının görünmeyen kısmı bana nedense çok ürkütücü geldi.

s3 e bağlanmak, kuyruğa veri yazıp işlemek geliştirme için çok basit şekilde hızlıca kullanılabiliyor. Ama bunun arkasınki dönen olayları izlemeyi ve anlamayı tercih ettiğimde, işlemcinin içindeki bit kadar yalnız hissediyorum kendimi. :-)

Codeigniter 3 ve 4 ile eş zamanlı olarak 1000 requestlere ulaştığımda bile sunucumda çok fazla yük yoktu. ki bu requestler,

Ödeme başlatma, ödeme sorgulama, sonuçlandırma, faturalandırma gibi işlemlerdi. ve burada ne orm ne kuyruk nede asenkronn işlem desteği vardı. tamamen startup geliştirilmiş bir projeydi.

Laravelin arkasındaki buzdağı sanki sunucunun omuzlarında gibi hissetiriyor nedense, özellikle bütün sınıf ve modelleri statik olarak çağırması performans konusunda beni biraz tedirgin etti. Böyle bir yükün altına laravel ile girilir mi sizce?

    mywebmanavgat Bahsettiğiniz statik çağırma gerçek anlamda statik bir çağırma değil. Biz bu sınıflara facade diyoruz ve aslında sınıfları doğrudan statik olarak çağırmayıp, arka planda servis konteyner’den ilgili örneği alıp yönlendiriyor. Yani static arayüz sağlasa da, metod çağrıları dinamik olarak çözümleniyor. Bu yüzden gerçek statik çağrılardan kaynaklanabilecek sorunlar ortaya çıkmıyor ve tamamen test edilebilir durumdalar.

    Ayrıca bunları kullanmak zorunda da değilsiniz. https://laravel.com/docs/12.x/facades#facade-class-reference bölümüne bakarsanız hangi facade servis konteynerden hangi sınıfı yüklüyor görebilirsiniz. İsterseniz. içim rahat olsun diyorsanız (ve IoC özelliklerini kullanmak isterseniz) facade üzerinde değil de direkt servis konteyner sınıfını dependency injection ile kullanabilirsiniz.

    use App\Http\Requests\StoreUserRequest;
    use App\Http\Responses\UserResponse;
    use Illuminate\Contracts\Hashing\Hasher;
    
    final class UserController extends Controller
    {
        public function __construct(
            private Hasher $hasher,
        )
        {}
    
        public function store(StoreUserRequest $request): UserResponse
        {
            $user = User::create($request->validated() + [
                    // Hash::make() yerine direkt enjekte ettiğimiz sınıfı kullanıyoruz
                    'password' => $this->hasher->make($request->validated('password')),
                ]);
    
            return UserResponse::make($user);
        }
    }

    Elbette bu kadar çok özelliğin performans tarafında bir bedeli olacaktır ama performansın fonksiyonelliğin önünde olduğu bir uygulama geliştirmiyorsanız sorun olmayacaktır çünkü Laravel uygulamalarındaki performans problemlerinin en büyük sebebi yazılımcılar ve yazdıkları koddur. Eğer gerçekten bir performans artışına ihtiyacınız varsa, özellikle çok fazla paralel istek alan bir uygulama geliştiriyorsanız buna da çözümümüz var:
    https://laravel.com/docs/12.x/octane

    ORM de kullanmak zorunda değilsiniz. Direkt SQL sorguları ile de çalışabilirsiniz ya da biraz daha yapısal yaklaşmak isterseniz Query Builder da kullanabilirsiniz.

    Bu da işinizi görmüyorsa, her zaman "doğru iş için doğru araç seçimi" önemli olduğu için aradığınız cevap PHP olmayabilir.