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

Herkese selamlar,

Request işlemlerinde veriyi alma şekillerinden hangisi mantıklı?

$request->name
$request->input('name')

Herkese kolay gelsin.

  • mgsmus bunu yanıtladı.
    • En İyi Yanıtsineld tarafından

    muharremozdemir Bununla ilgili oturup çok güzel bir açıklama yazmıştım ama cevapladığım şahıs tüm mesajlarını silip kendi hesabını da silerek forumdan ayrıldığı için konuyu kaybettik. Bunun gibi birkaç olayı LinkedIn'de sitemli bir şekilde paylaştım ama daha çok tepki aldım, ben de açıkçası bu tür şeyleri ciddiye aldığım için kendimi suçlayıp LinkedIn postunu sildim. Neyse, yapılacak bir şey yok...

    tl;dr
    Daima $request->input() kullanın.

    $request->input()

    1. $request->name şeklindeki kullanımı kesinlikle kullanmayın. En basitinden $request->headers şeklinde bir özellik var. Siz de dışarıdan headers isimli bir şey gönderirseniz $request->headers yazdığınızda sizin değer mi gelir yoksa http headers mı? O yüzden bu tür karışlıklıkları engellemek için daima $request->input() kullanın.
    2. $request->input('filters.name') şeklinde dizi şeklinde gelen içeriğe ulaşabilirsiniz.
    3. $request->input('filters.*') ya da $request->input('filters.0.id') gibi dizi gelen parametrelerde kolay işlem yapabilirsiniz. data_get() ile kullanımın hepsi geçerlidir.
    4. $request->input('quantity', 1) şeklinde gelen parametre boş ise varsayılan değer belirleyebilirsiniz.
    5. $request->input('quantity', 1) bana göre daha okunaklı. Kullanıcı tarafından gelen bir parametre olduğunu bakarken anlayabiliyorum.

    $request->input(), Request::input(), request()->input()... hangisi kullanılmalı?

    Request::input() ile request()->input() aynı şey; $request->input() ise genellikle Request sınıfı yönteme enjekte edildiğinde kullanırsınız. Burada önemli olan, Request sınıfı $request değişkeni ile enjekte edilmiş ise daima o değişkeni kullanmalısınız. Özellikle form request enjekte ettiğinizde Request::input() ya da request()->input() size form request objesini değil, yeni oluşturulmuş Request objesini verir ki onun içinde mesela validated() olmayacaktır. Yanlış Request'i almış olursunuz.

    $request->get(), $request->post() gibi yöntemler var, bunlar nedir? Kullanılabilir mi?

    Bunlar Request sınıfının üstüne inşa edildiği Symfony bileşeninden gelmekte olup hiçbir şekilde kullanmamanız gerekiyor. Her şeyin çözümü $request->input().

    • mgsmus

      Seviye 1382
    • Düzenlendi
    • En İyi Yanıtsineld tarafından

    muharremozdemir Bununla ilgili oturup çok güzel bir açıklama yazmıştım ama cevapladığım şahıs tüm mesajlarını silip kendi hesabını da silerek forumdan ayrıldığı için konuyu kaybettik. Bunun gibi birkaç olayı LinkedIn'de sitemli bir şekilde paylaştım ama daha çok tepki aldım, ben de açıkçası bu tür şeyleri ciddiye aldığım için kendimi suçlayıp LinkedIn postunu sildim. Neyse, yapılacak bir şey yok...

    tl;dr
    Daima $request->input() kullanın.

    $request->input()

    1. $request->name şeklindeki kullanımı kesinlikle kullanmayın. En basitinden $request->headers şeklinde bir özellik var. Siz de dışarıdan headers isimli bir şey gönderirseniz $request->headers yazdığınızda sizin değer mi gelir yoksa http headers mı? O yüzden bu tür karışlıklıkları engellemek için daima $request->input() kullanın.
    2. $request->input('filters.name') şeklinde dizi şeklinde gelen içeriğe ulaşabilirsiniz.
    3. $request->input('filters.*') ya da $request->input('filters.0.id') gibi dizi gelen parametrelerde kolay işlem yapabilirsiniz. data_get() ile kullanımın hepsi geçerlidir.
    4. $request->input('quantity', 1) şeklinde gelen parametre boş ise varsayılan değer belirleyebilirsiniz.
    5. $request->input('quantity', 1) bana göre daha okunaklı. Kullanıcı tarafından gelen bir parametre olduğunu bakarken anlayabiliyorum.

    $request->input(), Request::input(), request()->input()... hangisi kullanılmalı?

    Request::input() ile request()->input() aynı şey; $request->input() ise genellikle Request sınıfı yönteme enjekte edildiğinde kullanırsınız. Burada önemli olan, Request sınıfı $request değişkeni ile enjekte edilmiş ise daima o değişkeni kullanmalısınız. Özellikle form request enjekte ettiğinizde Request::input() ya da request()->input() size form request objesini değil, yeni oluşturulmuş Request objesini verir ki onun içinde mesela validated() olmayacaktır. Yanlış Request'i almış olursunuz.

    $request->get(), $request->post() gibi yöntemler var, bunlar nedir? Kullanılabilir mi?

    Bunlar Request sınıfının üstüne inşa edildiği Symfony bileşeninden gelmekte olup hiçbir şekilde kullanmamanız gerekiyor. Her şeyin çözümü $request->input().

      Selamlar abi,

      Kendini suçlamana gerek yok. İyilik yap denize at misali. Çok efsane ve anlaşılır yazmışsın. Çok teşekkür ederim. Ben Laravel 5.2 ile başlamıştım Laravel'e o zamanlar bir arkadaş $request->bla şeklinde kullan demişti. O günden bugüne alışkanlık ama yine de bi' sormak istedim. İyi ki de sormuşum. PhpStorm'da hata veriyor senin dediğin şekilde kullanmayınca. Ağzına, eline, yüreğine sağlık.

      Aslında Laravel ile alakalı şöyle bir best practice gibi bir şey hazırlasak forumca gayet güzel olur bence. Ne dersiniz?

      4 ay sonra