Autor Zpráva
Hando
Profil
Ahoj.

Měl bych dotaz, resp. spíš žádost o názor vás zkušenějších - abych si sám případně upravil názor. :)

Před rokem jsem používal víceméně mysql_ / mysqli_ funkce. Cca rok jsem využíval nějaký relativně neznámý databázový wrapper pro práci s PDO, nicméně doba pokročila a rád bych nasadil nějaké rozšířenější řešení, o kterém budu vědět, že se o něj mohu "opřít" a nebudu muset řešit nějaké "dětské nemoci" (např. problém se zápisem WHERE IN a skládáním dotazů). Z toho se mi zdá celkem rozumné východisko využít nějakou rozšířenější vrstvu pro práci s PDO driverem. Přemýšlel jsem, že bych vykuchal např. část CodeIgniter frameworku, ale proč to dělat, když existují jiné (dle všeho standalone) komponenty jiných frameworků, jako např. Nette/database. Což při použití composeru je celkem fajn benefit.

Konkrétně:
Celkem se mi líbí řešení dibi, případně bych asi zkusil Nette/database.
1. dotaz zní - (jelikož jsem někde četl - tuším na itnetworku, že dibi je mrtvá - osobně si myslím, že to je spíš kec.) - máte někdo představu, jak je to s budoucností dibi?
2. dotaz - vyplatí se začínat s dibi, nebo je lepší rovnou použít část Nette/database (která by měla být možná novější, ale jestli se nepletu, autor je stejný. ) Celý framework zatím využívat nechci, možná později.
3. Máte nějaké zkušenosti s alternativami? Používá někdo nějaký jiný wrapper? Co jsem hledal zde, tak např. Alphard dibi celkem zmiňoval, ale zdá se mi, že tak půl roku/rok se o ní už moc nemluví. Jak řešíte časté operace nad databází? Klasika ve stylu CRUD...

Děkuji předem za každý názor. :)
Keeehi
Profil
1. U dibi neprobíhá nějaký bouřlivý vývoj. Pokud ale produkt umí vše co je třeba, tak to není ani potřeba. Když se podíváš na historii úprav kódu, tak uvidíš, že drobné úpravy se stále dějí. Takže bych neřekl že dibi je mrtvé.
2. dibi je vlastně jen velmi chytře usnadňuje práci se samotnými SQL dotazy. Nette/database jde zase jiným směrem. Nezapisuješ SQL dotaz přímo (i když teoreticky můžeš) ale skládá se automaticky podle metod které voláš.
3. Používal jsem oba výše zmíněné. Pak jsem ještě používal Doctrine2. A ta jde zase úplně jiným směrem. V jednoduchosti jí předáváš PHP objekty a ona si veškeré ukládání řeší sama. S Doctrine2 jsem byl od samotné databáze odstíněn nejvíce ze všech třech zmíněných možností.

Nedá se říct, co z toho je nejlepší. Záleží na projektu, jeho a tvé filozofii a mnoha dalších faktorech. Všechna řešení jsem zvládl používat velmi rychle, tak si nějaké vyber a pokud ti nebude vyhovovat, tak zkus něco jiného.
Hando
Profil
Děkuji ti, Keeehi, za reakci.

Ve finále jsi mi potvrdil, co jsem si celkem myslel. U dibi jsem váhal, protože třeba na oficiálním fóru je asi nemožné se dočkat reakce a poslední aktivity jsou tam klidně 5 let staré. Ale zřejmě je to napsané tak dobře, že málokdo potřebuje radit. :D
Doctrine je na mě zatím moc daleko, do ORM se aktuálně pouštět nechci.

Ten poslední odstavec je parádní, prakticky všeříkající. :)
CZechBoY
Profil
Jenom doplním, že dibi má i podporu fluidního stavění dotazů... tedy není potřeba psát celé dotazy ručně.
U Nette\Database\Table se dost často naráží na limity, že tam složitější věci (třeba blbej inner join) nejde fluidním příkazem (v dibi jo).
M02
Profil *
Myslím, že je záhodno zvolit databázovou vrstvu podle/z frameworku, který používáš. A na větší aplikace už je určitě vhodné nějaký používat.

Co se "fluidního" stavění dotazů týče, je to v podstatě omyl a skoro bych řekl samoúčelný anti-pattern. Vytváříš tak něco, co se tváří jako objektová hierarchie, ale vlastně to není objektová hierarchie. Navíc si s tím neporadí žádný editor, který běžný SQL v pohodě chápe a bude schopen i ochoten ti s jeho sestavením pomáhat.
Kcko
Profil
Hando:

1) Používal jsem dlouhou dobu DIBI, se kterým se mi pracovalo velmi dobře, ale pak jsem přestoupil na NETTE a už jsem si tak zvykl na Nette Database, že jsem si tento samostatný balíček narval i do 7 let starého projektu (nacpal jsem si tam z Nette víc balíčků, které usnadní práci :-), ale bavíme se tu o DB wrapperu, tak u toho zůstaneme).

2) S Dibi můžeš začít, naučíš se tuto knihovnu používat za jeden večer, ale myslím, že žádný začátečník nejsi a mnoho Ti to nepřinese, tak si zkus rovnou nainstaloval NDTB a mrkni se co všechno se s tím dá dělat (budeš překvapen jak snadno lze skládat dotazy, jak snadno získavat vazby z jiných tabulek ... atd viz dokumentace)

3) Nemám, jediná akceptovatelná alternativa je Doctrine 2, ale to je pro mě zatím ještě hudba budoucnosti. Nette Database mi zatím plně vyhovuje a nemám potřebu zatím používat něco jiného.
Alphard
Profil
Hando:
Co jsem hledal zde, tak např. Alphard dibi celkem zmiňoval, ale zdá se mi, že tak půl roku/rok se o ní už moc nemluví.
To bude i tím, že tady Alphard již delší dobu nestíhá odpovídat :-). Poslední dobou se stále víc a víc vzdaluji od PHP světa, takže nejžhavější novinky mi mohly uniknout, ale myslím, že se tak moc nezměnilo.
Já jsem dibi doporučoval především začátečníkům a to asi hlavně z následujících důvodů:
- s nativními PHP nástroji pro přístup k databázi podle mě nejde pohodlně a rozumně pracovat,
- dibi má nejblíž ke klasickému psaní dotazů a začátečnickým návodům,
- když se používá podle ukázek, je prakticky vyloučené SQL injection,
- začátečníci mohou postupně používat pokročilejší funkce
- a zároveň si vyzkouší správu nějaké externí knihovny (ale zatím v jediném souboru), zvykají si na to, že nemusí být "všechen kód jejich vlastní".

Kdo zvládá pokročilejší nástroje, jen do toho!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: