Jaké ORM pod php verzi 5.2.14
- Solution
- Člen | 50
Zdravím,
mám takový menší dilema, musím vytvořit takový menší systém pro
jednoho známého, bohužel začal jednat dříve, než se mě vůbec zeptal a
zakoupil hosting, kde je php verze 5.2.14, no co se dá dělat musel jsem
ustoupit na Nette pro 5.2, ale ted mám trochu problém s tím, jakou DAO
vrstvu zvolit,
Doctrina nepřichází v úvahu, 2.0 verze je pro 5.3.+ a 1.2 pro min. 5.2.3,
tak jsem zkusil dohledat ormion, ten už je bohužel mimo hru, NOTORM od pana
Vrány se mi nezdá jako moc dobré řešení a kdybych použil dibi, tak se zas
o kus vrátím. Nemá někdo zkušenosti s nějakým jiným ORM?
díky
- srigi
- Nette Blogger | 558
Mne sa velmi paci ActiveRecord vrstva v nami pouzivanom frameworku Yii. Mozno s trochou namahy je mozne tu vrstvu izolovat a pouzit samostatne.
- newPOPE
- Člen | 648
Mne sa pred casom nic nezdalo, tak som si napisal kus kodu nad Dibi.
Styl zapisu:
<?php
$testR = new UserRow();
$user = $testR->get(2)->fetch();
var_dump($user);
var_dump($user->document);
var_dump($user->document[0]->category);
//still we have power of DibiFluent with this code
var_dump( $user->document()->leftJoin(...) ... ->fetchAll() );
//or we can clear SELECT clause
var_dump( $user->document(TRUE)->select("name")->as("myName") ... ->fetchAll() );
?>
Nechcelo sa mi dokola pisat select from, a kedze to bolo do skoly tak tam o vykon a opt. neslo. V podstate to len pripravuje DibiFluent, a automat. taha aj relacie…
PS: kedze to nema dokumentaciu tak ti asi bude na NIC :-D
viac kodu http://projects.stipo.sk/kviki/
Editoval newPOPE (29. 10. 2010 15:26)
- Ondřej Brejla
- Člen | 746
Padik napsal(a):
Zdravím,
…1.2 pro min. 5.2.3…
5.2.14 je snad větší než 5.2.3, ne? :-)
- Ondřej Mirtes
- Člen | 1536
Padik: Nemazlil bych se s tím a vyjednal si na hostingu PHP 5.3 anebo změnu hostingu. Vždyť jde o pár korun a to se v ceně vývoje webu ztratí. Zkus to klientovi vysvětlit tak, že s PHP 5.2 by ti ten vývoj trval dýl a prodražil by se. S PHP 5.3 máš Doctrine 2 a to budeš mít za chvíli :))
- Ped
- Člen | 64
Ja bych rekl ze do urciteho stupne velikosti projektu (dostatecne maleho) je
Doctrine1 produktivnejsi nez Doctrine2 co se tyce casu vyvoje. :)
(uznam dalsi hanu na Doc1 jako ze je to pomale, zere to moc RAM, vsechno je tam
vic zadratovane a hur se to ohyba, atd… ale proste dokud mas maly projekt
kteremu sedi „Active Record“ styl, tak s Doc1 musis toho natukat tak o 10%
min nez s Doc2)
- VeN
- Člen | 46
(uznam dalsi hanu na Doc1 jako ze je to pomale, zere to moc RAM, vsechno je tam vic zadratovane a hur se to ohyba, atd… ale proste dokud mas maly projekt kteremu sedi „Active Record“ styl, tak s Doc1 musis toho natukat tak o 10% min nez s Doc2)
Tedy já tu nechci vyvolávat flame a zavádět diskuzi někam úplně jinam,
nicméně si dovolím podotknout, že je třeba brát v potaz to, že
s projektem nepracujeme pouze do odevzdání zákazníkovi, ale že je velká
pravděpodobnost, že s ním budeme pracovat i v budoucnu. Z tohoto důvodu
mi nepřijde rozumné obětovat rozšiřitelnost/přívětivost/lehkost kvůli
tomu, abych místo 1100 řádků napsal řádků 1000.
Nicméně pokud bychom požadovali verzování, vícejazyčnost a podobně (což
pak rozhodně není 10% kódu), tak jsme někde úplně jinde. Tyto
rozšíření pro Doctrine 2 AFAIK zatím pořádně neexistují. Zde bych po
Doctrine 1.2 asi sáhl.
U malých projektů bych napřed sahal po nějaké databázové abstraktní
vrstvě (např. Doctrine DBAL) a psal dotazy ručně.
- Ped
- Člen | 64
1000 radku se obvykle udrzuje lip nez 1100.
Ja delam na Doc1 vetsi projekt, a jsem zatim maximalne spokojenej, obcas si to musim trochu opravit/vylepsit, ale ActiveRecord styl mi zatim zadne problemy nenadelal, usetrilo mi to spoustu prace (treba generovani DB migraci mezi verzemi) a vykonove to staci na to co potrebuji (budu mit online vzdy jen par uzivatelu, takze to nemusim skalovat na stovky a vic, to bych se bal i s Doc2). Ale Doc2 je taky velmi hezky kus kodu a ma proti Doc1 spoustu vyhod, resp. je proste hodne jiny. Ale nerek bych ze Doc2 je automaticky lepsi, porad verim ze jsou ulohy kde Doc1 sedne lip a ulehci praci vice.. jenom ty HW naroky jsou ponekud zrudne, ale to ani PHP+Nette+Doc2 neni zadna vyhra.
Jenom mne zaujalo, proc pro maly projekt nepouzit Active record styl? Podle mne prave u tech nejmensich projektu (mineno rozsahem zdrojaku a naroky na vykon aplikace) je nejnizsi riziko ze clovek narazi na limity ActiveRecord pristupu, a naopak musi psat minimum kodu aby mohl pracovat s datami OOP stylem pres tridu a nemusel se vubec starat o DB. Prave naopak pro projekty kde jde o vykon nebo je vnitrni model znacne komplexny bych se ActiveRecord vyhnul a sel bud do Doc2 nebo Doc2 + pristup pres DBAL k optimalizovanym vlastnim DB strukturam .. je to vic prace, ale umozni to vetsi kreativitu a lepsi vykon)
edit: mne drobny flame a diskuze nevadi, ne ze bych mnel tolik volneho casu, ale vzhledem k tomu ze si v tehle otazce sam nejsem jisty a muj nazor vychazi spis z pocitu nez z nejakych velkych zkusenosti/vedomosti, tak si rad vyslechnu jine nazory („flamovitost“ mi nevadi, jsem zvykly za ty leta na internetu :) )
Editoval Ped (2. 11. 2010 10:20)