Parašė Žmogus· 2021 Vas. 18 18:02:51
#16
programuotuvas parašė:
Gal ir pavėluotai, bet pastebėjimai ir dabar aktualūs.
Dėl ORM argumentai, sakyčiau, silpnoki. Jeigu netinka esami abstrakciniai layeriai, tą galima pasirašyti ir patiems (WP, kiek suprantu, kažkokį layer'į ir naudoja, tik kur kas paprastesnį, kas nebūtinai yra blogai). Jeigu pasiūlys kažką light-weight, paprastesnio, bet saugaus ir veikiančio, tai tą daug kas ir naudos. Pvz man nepatinka Doctrine, jog, norint padaryti didelį insert'ą į DB, reikia arba rašytis savo užklausą, arba šaudyti po vieną insert'ą, kas yra tiesiog neefektyvu ir neatitinka tos idealogijos, kuriam šis persistence layeris ir sukurtas.
ORM layerio paskirtis yra tiesiog užsitikrinti pakankamą abstrakcijos layer'į, kuriame būtų galima kurti entities klases su tipizuotais laukais, taip pat pateikti savo custom filtrus, pritaikytus būtent dalykinei sričiai. Iš jų po to gauname entities klases, repozitorijas, dar controllerius. Patiems visa tai apsirašyti užtruktų nemažai laiko, todėl tas mums padeda sutaupyti laiko. Jeigu layeris failina paprastuose dalykuose, tai čia yra ne idėjos problema, o tiesiog "poor implementation details". Pavyzdžiui, Doctrine tikrai galėtų suimplementinti protingesnį insert'ą SQL'ui su didesniu kiekiu duomenų apart šaudyti po vieną insert'ą, dėl ko skundžiasi beveik visi per stackoverflow, kas su tuo susidūrė.
Gal su ORM problema, kurią galima būtų pastebėti, yra tai, kad jie bando sukurti abstrakciją tiek užklausoms, tiek migracijoms, t.y. bando būti šveicarišku peiliu. Bet čia jau problema kaip ir visur. "Kas tinka viskam, tas netinka niekam". Galbūt protingiau būtų atskirti visus ORM'us į tris dalis - duomenų logikos sukūrimas, duomenų logikos naudojimas ir duomenų logikos migracija. Bet klausimas, ar tai patiks programuotojams.
Pats PHP eina labai geru keliu išties. Turi Composer, patys 3rd party libai daugumoje yra labai "lousely coupled", gal net labiau nei kokiame C#. Ir tas yra puiku, nes tai rodo, kad didelę dalį problemų galima išspręsti rašant geresnius libus. Man su PHP kas patinka, tai kad užtenka susikurti Composer projektą ir jau gali susibuildinti norimą frameworką vien iš libų. Retai kur tokį dalyką pamatysi - ten iškart turi pasiimi "core boilerplate" kodą ir ant jo mėginti kažką lipdyti.
Galutinis klausimas. Pamenu, šis puslapis turėjo krūvas lankytojų kažkada. Ir nemaža dalis jų buvo norintys prisidėti prie bendruomenės plėtros savo lygyje. Kur jie visi dingo dabar?
Kažką, kolega, maišot su ORM ir dideliai insertais, ORM ne tam skirtas ;)