mapare clasa peste tabela

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Lun Iun 20, 2016 10:42 am

Salut nevvermind, ai avut o idee excelenta cind mi-ai recomandat Laravel, am facut deja primele 2 proiecte (relativ simple) in Laravel 5.2, unul de tip eCommerce si altul cu gestiunea userilor si a postarilor (3 tabele: users, posts, likes). Sint scrise de mine (cu putin ajutor), n-am copiat altceva decit citeva bucati de cod HTML de pe bootstrap.com.
Imi place Laravel ca ofera posibilitatea sa scrii cod in stilul modern al anului 2016. Este un mare pas pentru mine. Laravel inglobeaza tehnologii de top (Composer, Artisan, Eloquent, Blade), dar si lucrul usor cu Bootstrap.
Cu CMS-ul meu am lasat-o un pic mai moale (temporar) dar voi reveni asupra lui pentru ca am si eu citeva idei pe care vreau sa le aplic mai tirziu.

Intrebare: crezi ca in faza asta ar fi bine sa incep si alt framework? M-am gindit la Wordpress, am si facut un mic site (3-4 pagini), dar pentru aplicatii complexe tot Laravel ar fi cel mai indicat. Ce zici? Multumesc.



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Mar Iun 21, 2016 11:54 am

Wordpress e prea simplu. Poti gasi de munca cu el - chiar destul de mult - dar e cam uratzel sistemul. Incearca-l.

Dupa ce te-ai jucat destul cu Laravel, incearca Symfony 2. Vezi acolo cod modern.
Cand il vei incerca, f probabil ca vei stramba din nas, fiindca acu esti un Laravel fan-boy, dar nu renunta (prea repede). Symfony 2 te invata si mai multe.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Joi Iun 23, 2016 9:21 am

Alta intrebare: ce parere ai de Angular 2 ? Merita incercat cu el? (evident nu imediat, ci in perspectiva).

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Joi Iun 23, 2016 3:22 pm

Nu l-am folosit niciodata. Dar l-as incerca daca as avea timp. Sa vad macar care-i shusta.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Dum Iul 03, 2016 10:28 am

Salut nevvermind, am facut in Laravel 5.2 un Basic application (CMS e prea mult spus) de tip CRUD, iar pe partea de Authentification am facut si un ACL (user_role facut cu middleware si ManyToMany relationship) pentru controlul accesului, toate scrise de mine. Structura de View-uri contine cam 20-25 view-uri (facute cu Blade), care in linii mari este configurata si acopera cerintele pentru CRUD, ACL (assign_roles) si afisare de date. Datele sint deocamdata simple postari (blog) dar se pot adapta orice tip de date.
Am cautat sa folosesc instrumente cit mai performante, Bootstrap 3 (deci responsive), helpere Form si Html, controlul validarilor cu Parsley etc.
Scopul Basic application este sa am un punct de plecare pentru aplicatii viitoare (economie de timp, nu mai pornesc de la zero), iar volumul de munca a fost foarte mare, 5-6 serii de tutoriale video insumind aproximativ 90 episoade parcurse in intregime, dar multe din ele le-am parcurs de 2-3 ori. N-am copiat surse, am lucrat in paralel incercind sa inteleg ceea ce fac, cu multe "Pause" pentru consultarea documentatiei. Dar metaforic vorbind am intors doar citeva file, iar cartea are multe pagini.

Intrebare: Ce i-ar mai trebui (ce module) aplicatiei sa pot spune ca este un instrument performant capabil sa abordeze proiecte in Laravel? Multumesc.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Dum Iul 03, 2016 9:13 pm

Pai nush. Depinde ce vrei sa faci.

As sugera:
- extensibilitate (asta-i primordiala daca iti vrei CMS-ul sa fie refolosit; aci ma refer la decuplare in general, adica plugins/hooks, observers, dependency injection + interfete/abstracte (pt a putea schimba implementarea cu usurinta), organizare pe module (o forma de decuplare fizica), utilizarea componentelor de pe Packagist decat sa-ti faci tu altele etc.)
- caching, atat in cod (un layer de caching ceva), dar si ca infrastructura (suport pt Varnish)
- o licenta potrivita (clientii sunt pasibili de reguli judiciare, si - cel putin aia seriosi - vor evita ambiguitati legale precum software fara licenta, asa ca fa-le clare; iti dai seama ca nu-i o problema majora de-a ta la momentul actual, dar am zis sa continui cu pedanteria)
- suport pt i18n si l10n
- versionare sub orice forma (git, svn etc.); pe asta am presupus-o implicita, dar, mai stii...
- mai mult moft, dar un REST API n-ar fi rau, sa expui informatiile unor 3rd party-uri (asta tine de integrare cu alte sisteme)

Ma rog, ideea nu este ce sa mai adaugi, ci se rezuma la cat de bine suporta CMS-ul tau sa fie extins sau suprascris. Adica shituri corporate gen N-tier apps (aplicatie stratificata), peste care poti construi feature-urile cerute de client.

Atat timp cat ai un sistem decuplat, poti construi orice pe el.
Vezi ce feature-uri au alde Drupal, Wordpress sau alte CMS-uri pe care vrei sa le emulezi.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Dum Iul 03, 2016 10:48 pm

Partea de View-uri este modularizata destul de bine (pot spune chiar ca e stratificata), e usor de extins sau de suprascris, partea de Route la fel, am pus initial Route::resource() dar le-am separat ulterior pentru a pune middleware pe fiecare separat (pentru ACL), partea de Model trebuie oricum construita pentru fiecare tabela, ramin Controller si celelalte, pe care le voi studia si voi incerca sa le fac cit mai independente. Multumesc!

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Lun Iul 04, 2016 12:11 am

Controller-ele sunt foarte specifice aplicatiei, de asta toata lumea sugereaza ca ele sa fie subtiri, fara prea multa logica ("thin controllers"); doar "da requestul, fa modelele si printeaza cu view-ul X". Asa ca ele, ca o exceptie, nu ar trebuie sa fie abstractizate prea mult. Restul cam da.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Lun Iul 04, 2016 8:07 am

Asa este. Si in Eloquent am respectat flilozofia de baza si n-am facut modificari (ex: model User => tabela users), deci in orice aplicatie tabela de useri se va numi users iar modelul se va numi User si in fiecare tabela cimpul id se va numi id.
Observatiile tale de specialist sint foarte utile, in general m-am gindit la decuplare (ca idee) cind am inceput aplicatia si n-am facut modificari care sa afecteze tiparele, dar sint aspecte pe care inca nu le-am studiat (ex. Events sau suport i18n si l10n). Din pacate "experienta" mea in framework-uri nu depaseste 2 luni pana in prezent, dar fac eforturi sa recuperez. Salut!

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Lun Iul 04, 2016 9:15 pm

Salut nevvermind, am pus aplicatia pe un repository pe Github, la https://github.com/vekand/laravel.
Intrebarea este : pot sa ies cu ea "in lume", adica pot incepe proiecte Laravel? Evident ca pe parcurs va fi completata si imbunatatita.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Lun Iul 04, 2016 11:39 pm

a) schimba-i denumirea. Ala nu-i laravel, ci se foloseste de el. Mi-e sa nu-ti bata la usa aia de la Laravel si sa te intrebe "Si de ce ti-ai denumit proiectul Laravel?"

b) Nu stiu ce poate aplicatia ta. E mai putin importanta iesirea in lume cat sa-ti fie folositoare in proiectele tale.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Mar Iul 05, 2016 8:08 am

Am schimbat denumirea in basicapp.
Aplicatia gestioneaza un blog si are 2 parti: partea publica (guest) de vizualizare blog (4 pagini +optiunile Register si Login (Login are Forgot password functional daca exista server de email), si partea secure de administrare a blogului. In baza de date trebuie sa existe tabela roles (am incarcat cu Seeder) incarcata cu 3 roluri: Visitor, Author, Admin, de asemenea in tabela users trebuie sa existe cel putin un user care sa aiba rolul de Admin (am incarcat tot cu Seeder, dar el trebuie sa apara si in tabela user_role, exista relatia ManyToMany). Cind se inregistreaza un user nou (oricine se poate inregistra cu Register) el nu are nici un rol definit, deci nu vede partea de administrare, este tot un Guest, dar el apare in tabelul html Assign roles (accesibil numai pentru Admin) iar Admin-ul poate sa-i atribuie unul din cele 3 roluri: Visitor (poate vedea tabelul html cu bloguri dar nu are acces la butoanele create, edit, delete), Author (are drept de create, edit, delete dar nu vede tabela Assign roles) sau Admin, care poate atribui oricarui user oricare din cele 3 roluri.
Imi place sa cred ca aceasta aplicatie este un bun punct de plecare petru dezvoltarile viitoare.

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Dum Iul 10, 2016 6:54 pm

Salut nevvermind, in ultimul timp am studiat Design Patterns, chiar mi-am pus si pe calculator o astfel de structura clasica MVC facuta in cod pur PHP.

Intrebare: mai are rost sa insist pe variantele clasice, avind in vedere ca framework-urile moderne aplica exact acest principiu?
Nu cred ca ma mai intorc sa scriu cod pur PHP. Ce zici? Multumesc.

nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: mapare clasa peste tabela

Mesajde nevvermind » Dum Iul 10, 2016 7:10 pm

Fara indoiala ca vrei sa le inveti. MVC nu este un design pattern, ci o arhitectura. E-o diferenta.

Cat despre celelalte d-aci: https://en.wikipedia.org/wiki/Software_design_pattern. Da, le vei folosi la greu mai incolo. A nu face vanilla php, nu inseamna ca nu vei mai scrie astfel de tipare niciodata; le vei scrie la un alt nivel. Composite, Decorator, Strategy, Singleton, Facade, Proxy, Null Object etc., astea le folosesc la greu (poate nu pe toate deodata si poate nu pe toate la fel de des).

"Nu cred ca ma mai intorc sa scriu cod pur PHP."
Il vei scrie la greu. Ce spui tu este ca nu mai vrei sa implementezi MVC la fiecare proiect; si mi se pare normal. Dar vei scrie vanilla PHP mult, chiar daca-i invelit intr-un design pattern lucios.

In rest, unde poti, nu mai scrie de la 0. Iti salvezi chestia ireversibila numita timp.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

vekand
Average Member
Mesaje: 83
Membru din: Dum Mai 03, 2015 9:15 am

Re: mapare clasa peste tabela

Mesajde vekand » Mar Iul 19, 2016 9:31 am

Salut nevvermind, luccrez in prezent (Laravel 5.2) la o aplicatie de tip CRUD pentru antrenorii de sah din scoli, aplicatie pe care o apreciez cam la nivelul intermmediate, (poate chiar upper-intermmediate, dar asta are mai putina importanta). Aplicatia are 3 sectiuni: blog (articole si informatii scrise de proprietar-antrenor, ce considera ca tebuie facut public), turnee (public) si cursuri (secure). Partea de cursuri este secure, cursantii (elevii, dar se poate inregistra oricine doreste, folosesc CAPTCHA) se inregistreaza, apoi Admin-ul intra pe ACL (Assign_roles) si acorda roluri (unul sau mai multe) pentru intretinerea site-ului (Visitor, Blogger, Referee, Teacher, Student, Author, Admin). Daca un user nu primeste nici un rol el ramine un guest chiar daca se logheaza. Login-ul se face cu email in loc de username pentru ca toate parolele sint criptate si userul are nevoie de reset-password. Tot in sectiunea de cursuri se poate edita cursul direct in pagina (cu TynyMCE) si se pot construi diagrame de sah care pot fi salvate in fisiere .jpg si introduse in editorul de texte, dar aceste diagrame se pot rezolva si direct in aplicatie (la constructia diagramei se preia si secventa de mutari pentru rezolvare), profesorul poate astfel sa vada direct in aplicatie care elev a rezolvat tema de casa si care nu.

Intrebare legata de partea de turnee: cum pot face un API (pasii necesari) intre aplicatia mea si site-ul http://www.chess-results.com/fed.aspx ? In aplicatia mea se vor incarca multe turnee recunoscute de FIDE (Federatia Internationala de Sah). Pe acest site (sub egida FIDE) sint incarcate toate turneele din tarile afiliate FIDE, deci si Romania (indicativ ROU). Acolo sint toate informatiile legate de un anumit turneu (lista jucatorilor, programarea fiecarei runde, clasament final, performantele fiecarui participant etc), iar aceste informatii le am si in aplicatia mea. Am nevoie de acest API pentru a prelua direct de acolo informatiile despre un anumit turneu (chiar si un simplu link direct la turneul respectiv ar fi suficient), sa nu mai fiu nevoit sa incarc fisiere PDF cu programarea fiecarei runde. Site-ul respectiv se incarca direct din programele de sah agreate de FIDE (SwissManager) pe care arbitrii turneelor il au pe laptop (cu conexiune net) in timpul desfasurarii turneului. Aceste programe (SwissManager) plaseaza informatii pe site dupa fiecare runda si scot fisiere Excel si PDF cu programul rundei, rezultate etc, dar mie imi trebuie sa iau datele de pe site. Banuiesc ca si acolo un turneu are un anumit ID, pe care daca l-as sti as putea sa-l introduc la mine in aplicatie si pe baza lui sa pot face API-ul. Multumesc.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 65 vizitatori