De cateva zile incerc sa "rumeg" si eu acest Symfony2, placut si iubit de multi insa documentatia nu e chiar pe intelesul meu, asa ca apelez la persoane care au experienta in asa ceva cu ceva intrebari.
Sa luam un exemplu de Bundle:
Cod: Selectaţi tot
Bundle namespace: Aplicatie/TestBundle
Bundle name: AplicatieTestBundle
Configuration format: yml
Totul ok pana aici, insa incerc sa inteleg arhitectura acestui mininat lucru numit Symfony asa ca incep cu cateva intrebari despre arhitectura noului Bundle:
[Controller]
[DependencyInjection]
[Resources]
[Tests] (1)
AplicatieTestBundle.php (2)
Ok, am evidentiat exact unde anume nu inteleg eu exact cine ce si cum (restul inteleg: Controllerul e unde tin controllerele, DependencyInjection se ocupa cu load-ul de configuratie (routing si services.yml), Resources e ok insa asa ajungem la ce ma intereseaza (sau la ce sunt nedumerit)
1. Test sa inteleg ca e un tester pentru bundle, in cazul chior el cauta sa vada daca controlerul da ceea ce trebuie (definit testul deja cu ruta si continutului controlerului generat default). Cine si in ce fel foloseste acest Tester?
2. AplicatieTestBundle.php e o clasa care extinde clasa bundle a sy2. Insa la ce foloseste? Am vazut ca e loaduita inainte de controller insa pentru ce e folosita? Si care e logica metodelor. Ca nu cred ca faci un constructor care sa parseze url-ul si sa faca ceva in functie de acesta.
Alte intrebari ar fi:
3. Cum anume pot face librarii (de cand ma stiu folosesc CI, si sunt familiarizat cu sistemul de helpere si librarii)? In cazul concret, la ce anume vreau eu sa fac, m-am trezit ca am mai facut inca un bundle (ca de exemplu Aplicatie/LibrariaSpecificaBundle) si o incarc ca si serviciu:
Cod: Selectaţi tot
services:
librarie.cevadetest:
class: Aplicatie\LibrariaSpecificaBundle\Controller\AlMeuController
si folosesc in controllerul din 'TestBundle':
Cod: Selectaţi tot
$librarie = $this->get('librarie.cevadetest');
$librarie->executaMetoda();
4. Cum pot face ca un controller sa nu dea crash in momentul in care nu-i intorc un template.
Eu vreau sa dau 'echo' la un json, de exemplu, fara sa fiu nevoit sa inchid controllerul (die, exit s.a.m.d.).
Momentan n-am gasit decat 2 variante: die/exit sau render un twig complet gol. Alte solutii exista?
5. Cum anume se creeaza un model si se foloseste acest model? Stiu ca nu e MVC in toata regula insa sunt obisnuit sa lucrez asa.
Stiu ca intrebarile nu sunt evidente si poate putin stupide (de aici si titlul topicului), si inainte de a cauta x tutoriale de start with symfony2 as avea nevoie sa inteleg exact logica acestui "framework", care personal, nu mi se pare atat de extraordinar pe cat de mult e laudat insa incerc sa-i dau o sansa (si datorita conjuncturii) si datorita faptului ca inca nu-l folosesc la adevarata capacitate.
Cam atat momentan, probabil o sa mai revin cu alte nelamuriri pe masura ce ajung in situatia in care "ma pierd".