Singleton Laravel

Poate intreb o prostie, va rog nu criticati :smile:

Cand incarc o pagina noua de fiecare data folosesc @extends(‘template.layout’), acest layout imi tine toate librariile, headerul, sidebar-ul etc. Ideea este ca am vazut intr-un tutorial urmatoarea secventa de cod care miroase a singleton, sincer nu stiu exact ce face, dar mi-a venit ideea daca nu e posibil sa facem ceva de genul asta, ca sa nu mai incarcam pentru fiecare view template-ul principal.

protected function setupLayout(){

if(!is_null($this->layout()){
	$this->layout = View::make($this->layout);
}
} 

Merci!

Din ce știu eu, singleton înseamnă că poate fi instanțiat o singură dată. Pentru asta are __constructorul private și o metodă publică de genul getInstance.

Ce anume ți se pare singleton-ish în metoda asta?


De asemenea, dacă înveți Laravel acum, îți recomand să investești 20$ pentru două luni de laracast. Din ce am văzut (pe sărite) și din ce s-au lăudat mulți, calitatea videourilor (ca și conținut) este superioară comparativ cu alte surse.

1 Like

Dracia aia apare in BaseController, Laravel < 5. Poti sa adaugi in BaseController ceva de genul: protected $layout = 'layouts.default';
iar in controllerele tale sa folosesti: $this->layout->content = View::make('main.index');

In felul asta view-ul index.blade.php nu mai trebuie sa extinda layout-ul “default”. Ar putea fi util ca sa folosesti acelasi template in diferite layout-uri.

to me it looks like a form of memoization

1 Like