Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Spatie kılavuzları üzerindeki görüşlerim: ajan becerileri
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Spatie kılavuzları üzerindeki görüşlerim: ajan becerileri

Yazılım

Spatie kılavuzları üzerindeki görüşlerim: ajan becerileri

teknomers
Son güncelleme: 18 Nisan 2026 10:21
teknomers
Paylaş
Paylaş

Laravel Geliştiricileri için Kılavuz

Spatie’nin paylaştığı kodlama kılavuzları üzerine birkaç yorum yapacağım. Bu yazıda PHP/Laravel kılavuzlarına odaklanacağım.

<hr/>

<blockquote>
    <p>Resmi olmayan stringler için camelCase kullanın</p>
</blockquote>

<p>Model(ler) her zaman <a href="https://www.php-fig.org/psr/psr-12/" target="_blank" rel="noopener noreferrer">PSR-12</a> kuralına uymuyor gibi görünüyor. Bu durum, örnekleri okuyarak çıkarım yapmayı gerektiriyor.</p>

<hr/>

<blockquote>
    <p>Kısa nullable notasyonu kullanın: ?string değil string|null</p>
</blockquote>

<p>Bu, PSR-12'de açıkça belirtilmiştir. Kuralın arkasındaki mantığı anlıyorum, çünkü diğer PHP işlevleri <code>null</code> belirtmek için soru işaretini kullanıyor.</p>

<p>Kendi görüşüme göre, üç veya daha fazla seçenek içeren durumlar için <code>null</code>'ın olduğu yerlerde uzun notasyonu kullanmak daha tutarlı olur.</p>

<hr/>

<blockquote>
    <p>Typed properties kullanın, docblock'ları değil</p>
</blockquote>

<p>Kod kullanarak belgeleme yapmayı destekliyorum. Bu noktada docblock'larda dizi şekilleri kullanmaya karşıyım; şekil önemliyse tür kullanmak daha mantıklı.</p>

<hr/>

<blockquote>
    <p>Tüm özellikler teşvik edilebildiğinde constructor property promotion kullanın</p>
</blockquote>

<p>Değişken argüman listesi ile birlikte, bu kıyaslama karmaşık bir hal alıyor. Değişken argüman listesi girişi daha sağlam bir şekilde geçmek için daha iyi bir yöntemdir.</p>

<hr/>

<blockquote>
    <p>Iterables'ı generics ile belgeleyin:<br/><code>/  @return Collection<int> */</code></p>
</blockquote>

<p>Eloquent model çıktısı için özel bir koleksiyon türü oluşturmak daha iyi bir yol olacaktır.</p>

<hr/>

<blockquote>
    <p>Docblock'larda sınıf isimlerini her zaman dışa aktarın; tam nitelikli isimler kullanmayın:</p>
</blockquote>

<p>Bu iyi bir tavsiye!</p>

<hr/>

<blockquote>
    <p>Hatalı durumları önce ele alın, başarı durumunu sonra</p>
</blockquote>

<p>İyi bir kural, ancak her zaman mümkün değil.</p>

<hr/>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code><span class="k">if</span> <span class="p">(</span><span class="o">!</span> <span class="nv">$user</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
    <span class="p">}</span>

    <span class="k">if</span> <span class="p">(</span><span class="o">!</span> <span class="nv">$user</span><span class="o">-&gt;</span><span class="nf">isActive</span><span class="p">())</span> <span class="p">{</span>
        <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
    <span class="p">}</span>
    </code></pre>
</div>

<p>Aynı kod bloğunda, birden fazla if'in olup olmaması iyi bir hedef olsa da, bir işlevdeki if sayısını azaltmak da önemli bir hedeftir.</p>

<hr/>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code><span class="c1">// Ternary yerine else</span>
    <span class="nv">$condition</span>
        <span class="o">?</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">doSomething</span><span class="p">()</span>
        <span class="o">:</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">doSomethingElse</span><span class="p">();</span>
    </code></pre>
</div>

<p>Ternary operatörünün belirtilmiş olmakla birlikte, genelde bir <code>return</code> ile bağlanmadığını belirtmek önemlidir. <code>Else</code> de kötü bir tercih değil.</p>

<hr/>

<blockquote>
    <p>Tuple notasyonu kullanın: [Controller::class, 'method']</p>
</blockquote>

<p>Bu, controller’ın genellikle constructor dependency injection içerdiğini varsayıyor, ancak metod bağımlılık enjeksiyonunu kullanmak daha iyi bir yaklaşım olabilir.</p>

<hr/>

<blockquote>
    <p>CRUD yöntemlerine bağlı kalın (index, create, store, show, edit, update, destroy)</p>
</blockquote>

<p>Bu kural, tutarlılık açısından anlaşılır. Öte yandan, bu kural çok kısıtlayıcı olabilir.</p>

<hr/>

<blockquote>
    <p>config() yardımcısını kullanın, env() kullanmaktan kaçının</p>
</blockquote>

<p>Bu harika bir kural!</p>

<hr/>

<blockquote>
    <p>Bir öğeyi işlemden geçirmeden önce çıktıyı koyun (hata ayıklamayı kolaylaştırır):</p>
</blockquote>

<div class="highlight js-code-highlight">
    <pre class="highlight php"><code><span class="nv">$items</span><span class="o">-&gt;</span><span class="nb">each</span><span class="p">(</span><span class="k">function</span> <span class="p">(</span><span class="kt">Item</span> <span class="nv">$item</span><span class="p">)</span> <span class="p">{</span>
        <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">info</span><span class="p">(</span><span class="s2">"Processing item id `</span><span class="si">{</span><span class="nv">$item</span><span class="o">-&gt;</span><span class="n">id</span><span class="si">}</span><span class="s2">`..."</span><span class="p">);</span>
        <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">processItem</span><span class="p">(</span><span class="nv">$item</span><span class="p">);</span>
    <span class="p">});</span>

    <span class="nv">$this</span><span class="o">-&gt;</span><span class="nf">comment</span><span class="p">(</span><span class="s2">"Processed </span><span class="si">{</span><span class="nv">$items</span><span class="o">-&gt;</span><span class="nb">count</span><span class="p">()</span><span class="si">}</span><span class="s2"> items."</span><span class="p">);</span>
    </code></pre>
</div>

<p>Bu, debug bilgisi eklemenin varsayılan bir yolu olduğunu varsayıyor; ancak bildiğim kadarıyla bu varsayılan değildir.</p>

<hr/>

<blockquote>
    <p>Sınıf sabitleri de PascalCase kullanır:</p>
</blockquote>

<p>Bu, <a href="https://www.php-fig.org/psr/psr-2/#a2-survey-legend" target="_blank" rel="noopener noreferrer">PSR-2</a> ile uyumlu değildir.</p>

<h2>
    <a name="conclusion" href="#conclusion">
    </a>
    Sonuç
</h2>

<p>Bir ajan yeteneği oluşturmak zordur çünkü farklı modeller bilgiye farklı şekillerde yorumlayabilir. Kılavuzlar, Spatie'nin kullandığı model(ler) ile çalışacak şekilde tasarlanmıştır, bu nedenle bazı kurallar biraz yerinde görünmeyebilir.</p>

<p>Diğer tüm kılavuzlarda olduğu gibi, bunlar da kişisel görüşlerdir ve bu nedenle birbirimizle farklı düşünebileceğimiz yerler olabilir. Ancak, ajan yeteneklerinin kişisel tercihlere göre kolayca değiştirilebilmesi güzel bir avantajdır.</p>

Kaynak: Orijinal Makale

Inertia.js Uygulamanızı Sessizce Bozar
Laravel 13 Queue::route(): Tüm Kuyruk Topolojisini Kontrol Etmek İçin Tek Nokta
Gün 8: Verinin Hayatını Görmek İçin Bir Zaman Çizelgesi Oluşturdum
Çok Kiracılı Laravel SaaS için Çift Bildirim Sistemi Oluşturma
Veri Kaybını Önleyin: Laravel’deki Yarış Şartlarını Nasıl Düzeltirsiniz
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Acil: Mirai Variant Nexcorium, TBK DVR’ları DDoS İçin Ele Geçiriyor
Sonraki Makale İron Galaxy’de Yaşanan Kitlesel İşten Çıkarmalar Oyun Sektörünü Sarsıyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Aoostar mini-PC’ler: 400 $’ın altında Ryzen gücü sunuyor
Donanım
Pandaria Macerası Sona Ererken Orgrimmar Kuşatması Azeroth’ta Başlıyor
Oyun
E-bike Girişimleri Kriz Yaşarken, Lectric Büyümeye Devam Ediyor
Genel
Sonos Era 100 Hoparlör Fiyatıyla Kaçırılmayacak Bir Fırsat Sunuyor
Liste
Xbox’ın CEO’sundan Kaçırılmaması Gereken Özel İçerik Açıklaması
Oyun
Ferrynoia Bitecek: Yeşil Deniz Teknolojisiyle Yeni Dönem Başlıyor!
Genel
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?