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

Merhaba,

Bazı fonksiyonların üzerinde ki yorum satırlarında şu şekilde bir şey oluyor;

/**
 * Display a listing of the resource.
 * @return Renderable
 */
public function index()
{
    $products = Product::where('status', '!=', 'waiting')->orderBy('id', 'desc')->get();

    return view('product::admin.index', compact('products'));
}

Yani bu tarz kullanımlar da benim bildiğim bu fonksiyonun aldığı parametler ve tipleri ayrıca en son ne tür bir değer döndürdüğü bildiriliyor. Bunun amacı nedir öncelikle?

Ayrıyetten renderable ne oluyor? Yani bu fonksiyon bir view döndürüyor mu demek istiyor? Bunu kullanmazsak ne zararı var kullanırsak ne yararı var bilginiz var mı bu konu hakkında?

Teşekkürler.

  • @dodiş#32740 Siz controller içinde return yaptığınızda veriyi \Illuminate\Http\Response olarak dönmeye zorluyorsunuz, response olarak dönebilmesi için de içeriğin stringe dönüşmesi lazım, obje veremez, html olur xml olur json olur... Bu dönülmeye çalışan içeriği View kullanarak oluşturduğunuz için de Response sınıfı if($content instanceof Renderable) $content = $content->render() yaparak stringe dönüştürüyor. İçinde render() yöntemi olduğunu biliyor çünkü obje yani View, Renderable arayüzünü gerçekliyor.

    Yani mesela bir şablonu ekrana basmadan (Response objesine dönüştürmeden) html çıktısını şöyle alabilirsiniz:

    $html = view('product::admin.index', compact('products'))
        ->render();

mgsmus Yani sizin yazınızdaki gibi renderable dediğimizde string değerler döneceğini mi anlamalıyız.

return view('product::admin.index', compact('products'))

yani dönen değer view ve bunun içerisinde string değerler olduğu için mi? ama compact içerisine arrayde verebiliyoruz kafam karıştı diğerlerini anladım abi de 😃

@dodiş#32740 Siz controller içinde return yaptığınızda veriyi \Illuminate\Http\Response olarak dönmeye zorluyorsunuz, response olarak dönebilmesi için de içeriğin stringe dönüşmesi lazım, obje veremez, html olur xml olur json olur... Bu dönülmeye çalışan içeriği View kullanarak oluşturduğunuz için de Response sınıfı if($content instanceof Renderable) $content = $content->render() yaparak stringe dönüştürüyor. İçinde render() yöntemi olduğunu biliyor çünkü obje yani View, Renderable arayüzünü gerçekliyor.

Yani mesela bir şablonu ekrana basmadan (Response objesine dönüştürmeden) html çıktısını şöyle alabilirsiniz:

$html = view('product::admin.index', compact('products'))
    ->render();

    @dodiş#32743 Burada @return Renderable yani \Illuminate\Contracts\Support\Renderable dönen sonuç Renderable arayüzünü gerçekleyen bir obje dönecek demek. View olabilir, Mail olabilir... Elbette controllerda dönüş tipi kullanmaya gerek yok, IDE kullanan yazılımcılar IDE öneriyor diye ekliyor. Siz controller'a zaten hiçbir yerde direkt ulaşmıyorsunuz, Router tarafından erişiliyor. Zaten artık dönüş tipi için PhpDoc değil function return type kullanılmalı, direkt çalışan koda yazılmalı.

      mgsmus Son dediğinizi anlayamadım abi kısa örnek verebilir misiniz? PhpDoc nedir?

      @dodiş#32745 index yönteminin üstündeki parametre, dönüş bilgisi, exception bilgisi vs veren yorum bölümüne PHPDoc denir.