Laravel vs Yii. Da li preći na Laravel?

Ne bih volio da ovo bude jedna od onih tema gdje korisnik traži da mu kažete šta bolje. Volio bih da mi odgovorite na konkretna pitanja.

Nekoliko godina radim u Yiiu, a na Yii2 sam prešao čim je izašla Alpha verzija tako da sam upoznat sa filozofijom ovog frameworka. Međutim Laravel zajednica raste i ozbiljno razmišljam da pređem na ovaj framework, ali mi treba mišljenje “Laravel developera”, a bilo bi sjajno da ima onih koji su radili u oba.

Asset Bundles
Ukoliko želite da uključite js/css datoteku “morate” (ako pratite filozofiju) da napravite novi AssetBundle, klasu u PHPu. Mislio sam da je to odlična stvar kada je potrebna kompresija i kompajliranje css/js datoteka, međutim i nije baš tako. Potrebno je ubaciti dvije .jar aplikacije i pokrenuti komandu iz konzole, znači ne radi automatski. Pored toga ne sviđa mi se što onaj ko radi klijentski dio mora da čeprka i po serverskom dijelu. Laravel + minify su elegantno rješenje za ovaj problem. Nemam baš neko pitanje ovdje, više konstantacija.

Routing
Čini mi se da Laravel ima mnogo elegantnije rješenje za ove potrebe?

Template engine
Sviđa mi se Blade kod Laravela, ali kod Yiia imam izbor, mogu da biram između Twiga i Smartya. Čitao sam da je Blade oskudan sa mogućnostima i sporiji od Smartya. Ovdje bih dao prednost Yiiu, sem ako nisam nešto propustio?

Validacija
Yii automatski generiše i JS kod za validaciju na klijentskoj strani, da li Laravel ima tako nešto?

Pogledajte ovaj kod za Laravel, isti problem ima i Yii:

echo Form::text('username');

Ovo će generisati input tag u HTMLu, i to je uredu za sada, ali šta kad budem htio raditi sa Polymerom? Za Polymer bi trebalo da se generiše paper-input tag. Kako će Laravel prihvatiti ovakve tehnologije?

Perfomanse
Mnogo benchmark testova je napravljeno i u svima je Yii u prednosti. Ali da li je Laravel stvarno toliko spor, da li može kasnije praviti probleme? Možda zato što se “ispod haube” nalazi Symfony? Da li će biti nekih poboljšanja u narednoj verziji?

Debugger
Yii ima debugger koji se nalazi pri dnu stranice tokom razvoja aplikacije i gdje se ispisuje broj SQL upita, vrijeme za generisanje stranice, aktivan Controller/metoda, koje metode su sve pozvane… U praksi je veoma korisna stvarčica, ima li Laravel tako nešto?

Widgets
Ovo je razlog zašto obožavam Yii i zašto se bojim da nastavim da radim u njemu. Možete niz modela proslijediti u ListView on će vam generisati skoro sve, straničenje (ajax ili obično), poruku ako niz prazan i sl., a ListView nije jedini widget. Loša strana je što ne koristim više jQuery, a ne znam ni koliko ću još ostati pri Bootstrapu, a svi ovi widgeti zavise od toga. Tražio sam pakete za Laravel i nisam uspio naći, postoji li?

Zajednica
Laravel ima mnogo veću zajednicu, pa iz istog razloga mislim da ima više paketa i da su kvalitetniji?

Dokumentacija
Dokumentacija za Yii2 je solidna, ali nedostaje primjera. Koliko sam vidio Laravel ima odličnu dokumentaciju?

Laravel 5
Finalna verzija Yii2 je skoro izašla, a nova neće još dugo. Laravel 5 bi trebao uskoro da bude objavljen, da li je nešto od gore navedenih stavki isravljeno? Da li će stari paketi biti kompatibilni sa novom verzijom?

Prilično sam lijen kada moram da radim rutinske poslove, zato volim da što više stvari riješim sa gotovim paketima, pa zato toliko i cijenim widgete u Yiiu. Mnogo sa proučavao neke nove web tehnologije, posebno Polymer, pa tražim framework koji je spreman za tako nešto. Volim kada se razdvoje klijentski i serverski dio, bower za JS, composer za PHP, primijetio sam da mi je tako mnogo lakše razvijati aplikaciju.

To je to otprilike za sada, nadam se da će ova tema pomoći i još nekome. Unaprijed zahvalan na odgovorima.

Dosta toga si dobro polovio.

Sta se asseta tice, to “rucno” zapravo ne bi trebalo biti rucno, nego se skriptira nekakav build tool (Jenkins recimo).
Routing - u Laravelu je zgodan za manje/srednje projekte. Na vecim mi vec postaje kupus. Laravel 5 ce po uzoru na Symfony (u kojem je po meni najbolje rijesen routing), dozvolit routing preko anotacija na samim klasama.
Templating - Blade je los proizvod. Bar zadnji put kad sam ga gledao. Twig i Smarty su bolji.
Performanse - ne, performanse nisu problem, pogotovo ne zato jer je u pozadini Symfony (Symfony podrzava hrpetinu cache mehanizama out of the box, i nakon pravilnog deploya je ludilo).
Debugger - ne znam za L5, ali netko je napravio bundle za profiling po uzoru na Symfony (to o cemu pricas nije bas debugger, nego profiler; za debugger pogledaj recimo Kint - postoji bundle za Symfony, i moze se ukljucit u Laravel, ne znam za Yii). Profiler je malo losiji od Symfonyevog, ali je okej. Vjerojatno ce radit i na L5; ako ne, neko ce ga prilagodit sigurno.
Ostalo - zajednica je velika i aktivna kod Laravela (rec cu i Symfonya, jer se bundlovi mogu shareat između ta dva frameworka - ako ti nesto fali kod laravela, pronađi bundle za symfony i iskoristi ga).

Sto se Polymera tice, neman pojma. Ne bi ga osobno nikad koristio. Ali bitno je napomenit da i full stack framework moze sluzit samo za serverski dio. Moderna arhitektura web aplikacije se oslanja na REST. Zaboravi na php templating engine, i radi REST endpointe, i napravi front end u frontend frameworku po izboru.

Opcenito, vrijedi pratit razvoj Laravela, i proucit L5. Ja se necu prebacit na njega (bar ne jos; trenutno mi je Symfony framework of choice).

http://www.yiiframework.com/doc-2.0/guide-rest-controllers.html

public function actionView($id)
{
    return User::findOne($id);
}

Jako zgodna stvar. Npr. prilikom ažuriranja ako ne prođe validaciju automatski vraća kod greške i sl. Postoji li kod Laravela tako nešto, nisam uspio naći?

Ima findOrFail : http://laravel.com/api/5.1/Illuminate/Database/Eloquent/Builder.html#method_findOrFail