Forum › PHP / SQL › Topic
[PHP/SQL] ORM Gebruiken?
Oké dus om een lang verhaal kort te maken, ik was aan het kijken voor Activerecord, en er waren mensen zeiden dat die methode dus slechter was en ORM kon gelijkaardige dingen bieden en zou een beter systeem zijn.
Dus heb ik gekeken naar Propel en Doctrine.
Ik heb eens wat geprutst met phpactiverecord, maar doordat dit een minimum vereiste heeft van PHP 5.4 of zo iets en zie ik niet in dat alle hosts er mee gaan werken, en dus vind ik dit toch niet echt een oplossing.
Dit alleen al... werkt niet overal, goede start.
Velen zeggen dat het gebruik van ORM voordeel heeft bij het feit dat je 1 abstractie methode hebt om je database handelingen te doen. En dit klopt ook voor het grootste deel.
Echter voor geavanceerde dingen, moet je mogelijk toch nog gaan tweaken.
De enige reden waarom ik zoiets zou kiezen is omdat je mensen dan hun eigen database kunt laten kiezen.
Echter als je erover nadenkt dat mensen hun eigen code niet kunnen schrijven, of ze downloaden een gratis script van je.
Ja dat bewijst al dat de cliënten die je hebt hoogstwaarschijnlijk allemaal van die mensen gaan zijn die alleen met MySQL kunnen werken, en ook met Cpanel, Directadmin, Plesk of andere GUI interfaces zo van die dingen kunnen instellen.
Met andere woorden, tenzij je echt iets maakt voor een gigantische netwerk zoals Facebook of zo. Is dit gewoon massieve overkill.
Dus ik wou jullie mening hierover eens horen. Want ik vind na het zelf te proberen wel handig, maar ik voorzie problemen die ik bij PDO (ondersteunt ook 12 databases) niet ga hebben bijvoorbeeld.
Dus heb ik gekeken naar Propel en Doctrine.
Ik heb eens wat geprutst met phpactiverecord, maar doordat dit een minimum vereiste heeft van PHP 5.4 of zo iets en zie ik niet in dat alle hosts er mee gaan werken, en dus vind ik dit toch niet echt een oplossing.
![]() | Code | ![]() | ![]() | ![]() |
|
Dit alleen al... werkt niet overal, goede start.
Velen zeggen dat het gebruik van ORM voordeel heeft bij het feit dat je 1 abstractie methode hebt om je database handelingen te doen. En dit klopt ook voor het grootste deel.
Echter voor geavanceerde dingen, moet je mogelijk toch nog gaan tweaken.
De enige reden waarom ik zoiets zou kiezen is omdat je mensen dan hun eigen database kunt laten kiezen.
Echter als je erover nadenkt dat mensen hun eigen code niet kunnen schrijven, of ze downloaden een gratis script van je.
Ja dat bewijst al dat de cliënten die je hebt hoogstwaarschijnlijk allemaal van die mensen gaan zijn die alleen met MySQL kunnen werken, en ook met Cpanel, Directadmin, Plesk of andere GUI interfaces zo van die dingen kunnen instellen.
Met andere woorden, tenzij je echt iets maakt voor een gigantische netwerk zoals Facebook of zo. Is dit gewoon massieve overkill.
Dus ik wou jullie mening hierover eens horen. Want ik vind na het zelf te proberen wel handig, maar ik voorzie problemen die ik bij PDO (ondersteunt ook 12 databases) niet ga hebben bijvoorbeeld.
Quote:
Met andere woorden, tenzij je echt iets maakt voor een gigantische netwerk zoals Facebook of zo. Is dit gewoon massieve overkill.
Om daar even op in te haken: ik denk dat Facebook het andere uiterste is en daardoor een verkeerd voorbeeld. Juist Facebook zal van tevoren besloten wat voor opslag medium ze gebruiken en daar het hele systeem op afstellen. De overhead van een extra abstractie-laag is voor Facebook een nachtmerrie (dit is overigens niet gebaseerd op feiten)
Anyway, de vraag die je stelt, "ORM gebruiken?", is een vraag die systeem ontwikkelaars zich continu af moeten vragen. Neem je de extra overhead voor lief, of ga je voor een geoptimaliseerde versie? Ik denk dat dat helemaal afhangt van je situatie. Zoals je zelf zegt: als je niet van plan bent van database te switchen, waarom dan de database abstraheren? En als je complexe queries maakt, kun je die veel beter zelf schrijven.
My 2 cents :')
Quote:
Webtijn schreef:
[...]
Om daar even op in te haken: ik denk dat Facebook het andere uiterste is en daardoor een verkeerd voorbeeld. Juist Facebook zal van tevoren besloten wat voor opslag medium ze gebruiken en daar het hele systeem op afstellen. De overhead van een extra abstractie-laag is voor Facebook een nachtmerrie (dit is overigens niet gebaseerd op feiten)
Anyway, de vraag die je stelt, "ORM gebruiken?", is een vraag die systeem ontwikkelaars zich continu af moeten vragen. Neem je de extra overhead voor lief, of ga je voor een geoptimaliseerde versie? Ik denk dat dat helemaal afhangt van je situatie. Zoals je zelf zegt: als je niet van plan bent van database te switchen, waarom dan de database abstraheren? En als je complexe queries maakt, kun je die veel beter zelf schrijven.
My 2 cents :')
Dus ORM is niet echt noodzakelijk.
Daar Kan ik wel mee leven
Quote:
Webtijn schreef:
[...]
Anyway, de vraag die je stelt, "ORM gebruiken?", is een vraag die systeem ontwikkelaars zich continu af moeten vragen. Neem je de extra overhead voor lief, of ga je voor een geoptimaliseerde versie? Ik denk dat dat helemaal afhangt van je situatie. Zoals je zelf zegt: als je niet van plan bent van database te switchen, waarom dan de database abstraheren? En als je complexe queries maakt, kun je die veel beter zelf schrijven.
Een ORM is echt veel meer dan gewoon een domme abstractie van databases hoor. Daarnaast is het ook perfect mogelijk om ORM queries te optimaliseren.
Styxxy, dat ben ik met je eens. Ik probeerde de TS eigenlijk uit te leggen hoe je dit soort afwegingen maakt. ORM is meer dan een domme abstractie (véél meer), maar ik vraag me soms af of al die overhead wel wenselijk is. Ik denk dat dit soort beslissingen volledig afhangen van de situatie.
Vendetta, waarom zou ORM noodzakelijk zijn?
Vendetta, waarom zou ORM noodzakelijk zijn?
Inderdaad, ORM is niet noodzakelijk, maar in mijn ervaring maakt dat het leven soms toch wel gemakkelijk. Ik heb nu geen ervaring met Doctrine2, of algemeen ORM in PHP (daarvoor doe ik nog te weinig in PHP), maar in andere talen maak ik enkel maar gebruik van ORM's.
Quote:
Styxxy schreef:
Inderdaad, ORM is niet noodzakelijk, maar in mijn ervaring maakt dat het leven soms toch wel gemakkelijk. Ik heb nu geen ervaring met Doctrine2, of algemeen ORM in PHP (daarvoor doe ik nog te weinig in PHP), maar in andere talen maak ik enkel maar gebruik van ORM's.
Ja dat bedoel ik nu net. De noodzaak van ORM blijkt vooral te gaan over talen zoals Ruby en Pyton mensen die juist gebruik maken van databases anders dan MySQL.
Het voordeel dat je natuurlijk hebt is dat je voor een klant dus een applicatie kan maken en het maakt niet echt uit welke database ze kiezen. Je maakt gewoon een installertje dat ze hun eigen database kiezen en hun gegevens opgeven.
Het probleem zoals ik al zei is dat vooral dan in PHP nog veel te veel gebruik wordt gemaakt van alleen maar MySQL.
Vooral dan omdat het zo makkelijk is voor de Wordpress / Joomla generatie om dit voor hunzelf op te zetten.
Als je kijkt naar een ORM zie ik natuurlijk voordeel in het feit dat het zo makkelijk te gebruiken is... Maar het opzetten ervan lijkt wat moeilijker (ik ben een windows gebruiker)
En dan vraag ik me gewoon af of het wel de moeite is om te leren hoe je zoiets gebruikt als het grote merendeel (wordpress generatie) van je klanten toch MySQL zal gebruiken.
Ik heb trouwens wel 1 ORM gevonden die niet zo moeilijk is omdat je er direct mee aan de slag kan.
http://redbeanphp.com/
Die vind ik geweldig gewoon. Alleen weet ik niet goed hoe je met de schema werkt.
Dat is dan ook weer zever. Je gaat echt niet tegen database X ontwikkelen en dat de klant database Y gaat gebruiken, dat doe je echt niet. En het gebruik van ORM is totaal taalonafhankelijk, dat maakt echtig niets uit.
Het opzetten van een ORM is niet zo moeilijk, het is een kwestie van de juiste configuratie in te stellen. Over het algemeen staat dat wel goed gedocumenteerd. Eens dat je dat ook enkele keren hebt gedaan, zal dat ook bij wijze van spreken, 2 klikken zijn om dat te doen.
Again, de keuze voor ORM moet je niet op basis doen van welke database je gebruikt, dat is iets dat totaal niet relevant is.
Het opzetten van een ORM is niet zo moeilijk, het is een kwestie van de juiste configuratie in te stellen. Over het algemeen staat dat wel goed gedocumenteerd. Eens dat je dat ook enkele keren hebt gedaan, zal dat ook bij wijze van spreken, 2 klikken zijn om dat te doen.
Again, de keuze voor ORM moet je niet op basis doen van welke database je gebruikt, dat is iets dat totaal niet relevant is.
Quote:
Styxxy schreef:
Je gaat echt niet tegen database X ontwikkelen en dat de klant database Y gaat gebruiken, dat doe je echt niet.
Dat heb ik ook nooit gezegd.
Ik ben wel met het een en het ander veronderstellingen in deze conversatie gestapt.
Maar nu ik de Documentatie van Doctrine heb ik al bijgeleerd.
Quote:
De noodzaak van ORM blijkt vooral te gaan over talen zoals Ruby en Pyton mensen die juist gebruik maken van databases anders dan MySQL.
Volgens mij is ORM nooit een noodzaak, maar een keuze die te maken heeft met de architectuur van je systeem. Het opzetten van ORM heeft ook niks met Windows vs. Linux te maken. Ik denk wel dat PHP een minder geschikte taal is om ORM systemen in de ontwerpen. Java's Hibernate is bijvoorbeeld een stuk volwassener dan Doctrine.
Quote:
En dan vraag ik me gewoon af of het wel de moeite is om te leren hoe je zoiets gebruikt als het grote merendeel (wordpress generatie) van je klanten toch MySQL zal gebruiken.
Leren hoe je het gebruikt is misschien niet nodig, maar weten dat het er is, wat het is en wat het doet lijkt me zeker niet verkeerd.
Misschien leuk om aan de discussie toe te voegen. Ik kwam gister Anorm tegen. Ze schrijven zelf dat het een "data access layer is die SQL gebruikt om met de database te communiceren en je van een API voorziet om de datasets te transformeren". Daarmee is Anorm dus per definitie geen ORM. Ik probeer je hiermee duidelijk te maken dat er geen "noodzaak" is om ORM te gebruiken.
Anorm: https://github.com/playframework/Play20/wiki/ScalaAnorm
Edit: En hier nog een mooi artikel: http://www.revision-zero.org/orm-haters-do-get-it



Offline



