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

Elequent ORM'nin kodlarını inceliyordum. Builder ve Factory desenini daha iyi anlamak adına iyi olacağını düşündüm.
Hemen hemen nasıl çalıştığını anladım oldukça sade yazılmış. Fakat anlayamadığım nokta Modelleri statik olarak kullanmaya nasıl izin verdiği. Bazı methodlar statik olarak bulunuyor (all,select,destroy,with) fakat diğerlerini bulamadım veya başka bir yolla mı kullanıyor anlayamadım.

Kaçırdığım nokta neresi?
Link

--Düzenleme--
Sorunumla ilgili güzel cevaplar verilmiş

    deathisonitsway
    Evet onu kaçırmışım. Fakat methodları böyle statik kullanırken $this ibaresini nasıl methodların içerisinde kullanıyor orasını çözemedim.

      return (new static)->$method(...$parameters); buradaki ...$parameters ifadesinde ki 3 noktanın işlevi nedir?

        ertanusta statik yöntemlerin içerisinde $this kullanılmıyor. Karıştırıyorsunuz.

        omer Yönteme girilen her bir parametreyi içeri dizi olarak almak için kullanılıyor. Splat Operator denir:

        function splatTest(...$params)
        {
            return $params;
        }
        
        print_r(splatTest(1,2,"üç",4,"beş"));
        Array
        (
            [0] => 1
            [1] => 2
            [2] => üç
            [3] => 4
            [4] => beş
        )

        ertanusta

        $this kullanılmıyor.

        User::where() olarak static method bulunmazsa sınıf icinde sistem __callStatic methoduna başvuruyor.
        burada da new static yapılıyor.Bunun avantajı (new User)->where kullanmaktan ziyade daha kolay ulaşılabilir olması.
        Ama buradaki dezavantaj idelerin bu sihirli methodları tanımaması..Yani user::where icin bir annotation tanımlanmalı ki kolay kullanılsın...Laravelin bir cok sihir methodunda oldugu gibi bunların bir çoğu hala eksik..

        ...$params da php nin özelliklerinden @mgsmus yazdığı örnekteki gibi SPLAT OPERATOR diye geçer.

        
        public function splatTest(...$params)
        {
        [$a,$b] = $params;
        
        }
        
        
        splatTest(1,2);  //$a=1 $b=2