Recomandare carte/tutorial complex pentru automatizari


(Pîrvan Marian) #1

Salut, as dori in mod deosebit sa inteleg tot mai bine principiul " automatizarii" in programare , de preferat pe Php ca si limbaj dar e ok si in Javascript.

Ca sa dau un exemplu :
se da un CRUD, sa se creeze o clasa abstracta pentru a crea toate metodele unui CRUD standard, astfel incat cand ai o noua tabela sa mostenesti aceea clasa iar tu doar sa creezi o alta si metoda aferenta fiecarui tabel.

In fiecare metoda nu trebuie decat sa precizezi, tabelul si eventual metoda rest, orice carte fie ea si increibil de stufoasa voi arunca o privirea asupra ei, iar ceea mai buna :slight_smile: o voi parcurge si citi.

Aplicatia isi are sensul in momentul in care ai 20-30 de tabele si nu vrei sa rescrii acele metode (zeci de linii) pentru fiecare clasa/tabel in parte.

Este doar un exemplu care l-am intalnit, daca imi puteti recomanda o carte/ un tutorial / curs e mai mult decat ok.

Multumesc frumos!


(Red) #2

Uau, asta eu nu o numesc automatizare pe cât o numesc: value your own time.

Apoi, nu văd la ce e bună o carte sau un tutorial. E un algoritm simplu.

În SQL ai SHOW TABLES; și am uitat query-ul pentru a arăta coloanele unui tabel (SHOW FULL COLUMNS FROM tableName). Îți faci o clasă care are niște metode private de genul: getTables() și getColumns() și niște metode publice de select, insert, update, delete. Unele primesc un array asociativ și un string (numele tabelului) și verifică dacă tabelul există și dacă acele coloane există și au acelaș tip (well, numeric sau nu). Dacă da, fac SELECT-ul, INSERT-ul, UPDATE-ul.

E bine să ai și un WHERE pe acolo, dar asta devine enervant când ai condiții cu OR. Altfel e ușor să ai un array de condiții care vor fi concatenate cu AND.

All in all, sunt 30 de minute petrecute cu cap la finalul cărora vei putea scrie $dbClass->insert($data, ‘providers’) fără să-ți prea pese ce structură are acel providers - atâta timp cât $data e populat corect.

Mai apoi poți să faci caching la tabele și coloane (care să poată fi invalidat ușor în cazul în care știi că a fost ceva schimbat) să nu freci baza de date la fiecare operație.


(Georgiana Gligor) #3

Poate gresesc, dar tu ai nevoie in exemplul cu DBul de ceva similar cu Doctrine. Aici sunt 2 componente, DBAL si ORM, cred ca poti folosi cu incredere ORMul fara partea de relatii, pentru ca e deja gata facuta partea de interogari simple. Daca vrei in acelasi loc sa folosesti si “metoda rest” cum o numesti tu, consider ca ai o abordare gresita, datele nu trebuie accesate si expuse in acelasi loc in cod.

Ar fi mai bine daca ne-ai preciza ce doresti sa obtii, ca sa putem veni cu sfaturi concrete. “Automatizare” e un termen foarte vag, iar fara context nu cred ca te poate ajuta nimeni. Sunt zeci de frameworkuri gata facute, care in 15 min iti dau posibilitatea sa creezi un RESTful API. Iti recomand KnpUniversity, absolut tot continutul e free in format text, iar daca vrei neaparat video subscriptionul e f accesibil ca pret.


(Red) #4

E he he, dac-am lua mereu cod gata făcut am fi toți Wordpress developers.

E un exercițiu bun pentru oricine să-și scrie propria clasă „abstractă” de a lucra cu o bază de date.


(Pîrvan Marian) #5

Multumesc, imi este de ajutor raspunsul tau observ ca vorba de perspectiva mai degraba.


(Pîrvan Marian) #6

Ma intereseaza tot ce inseamna " automatizare " din puncte de vedere strict informatic, adica sa nu implice hardware. Ma gandesc ca ar fii niste termeni, concepte ce m-ar ajuta sa inteleg mai bine deasta am cerut ca recomandare o carte, insa ma gandesc ca este fix “practica si exercitiu” in treaba asta.

Am dat crud-ul ca si exemplu, nu vreau sa ma focusez fix doar pe CRUD.

Am lucrat cu Symfony si aveam o clasa abstracta ce era folosita pentru fiecare REST.
Faceai o metoda noua si doar ii precizat entitatea si practic el lua automat campurile necesare.

Standard o clasa crud/rest aveai in medie si 150 de randuri , mostenind clasa abstracta aveai si 20-30 de randuri de cod…

Ma gandeam ca daca imi fac propriul generator de CRUD-uri ca si exercitiu m-ar ajuta mai bine inteleg conceptul si de aici am cerut o parere.

@tekkie am urmat vro 2 luni cam tot ce avea legatura cu Symfony 2-3(dupa site-ul Knp University, cel mai interesant mi s-a parut acel REST, faptul ca il facea sa fie structurat ca un joc mi se pare chiar prietenos.


(Andrei F.) #7

De ce nu te apuci si analizezi acea clasa abstracta de la Symfony? Mergi din metoda in metoda pana gasesti cum face fiecare lucru.