<Q> - nabušená PHP třída pro práci s MySQL – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

<Q> - nabušená PHP třída pro práci s MySQL – PHP – Fórum – Programujte.com<Q> - nabušená PHP třída pro práci s MySQL – PHP – Fórum – Programujte.com

 

6. 6. 2008   #1
-
0
-

Nebudu to okecávat, co umí:

- práce se všemi druhy běžných MySQL příkazů. Vše funguje na přehledné objektové bázi
- řetězení (volání funkcí je možno za sebe páskovat ve stylu jQuery)
- automaticky escapuje všechny hodnoty, které to potřebují
- přispívá k přehlednosti a logičnosti kódu
- podpora stránkování - zavoláním jednoho jediného příkazu vám rozstránkuje úplně cokoliv
- podpora stromových struktur - vypisuje stromy jako by se jednalo o normální lineární data - jediné, co musíte udělat rozdílně je určit místo, kam se budou vkládat vnořene větve
- připravené funkce pro rychlé renderování tabulek, seznamů atd. - hodí se pro rychlé vypisování vývojových dat
.
.
.

Pro další features, ukázky kódu a stažení checkněte website:
http://q.php5.cz/index.php

Nečekám že to někdo hned začne používat. Spíš uvítám komentáře k návrhu a nápady na další vylepšení (i když by to nechtělo moc přehánět - už teď má 2000 řádků). Upozorňuji, že s touto třídou nebyl zatím vytvořen žádný projekt, takže je pravděpodobně poměrně zabugovaná. Navíc jsem zatím nestihl udělat dokumentaci.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
sir_arthur
~ Redaktor
0
Stálý člen
7. 6. 2008   #2
-
0
-
Nahlásit jako SPAM
IP: 82.119.117.–
@mattonik
bukaj0
Věrný člen
7. 6. 2008   #3
-
0
-

CommanderZ
Jen tak zběžně jsem to prolítnul. Zdá se to jako jedna z mnoha knihoven na sestavování dotazů, co jsem už viděl. Není ani o moc lepší ani horší než ty, co jsem viděl, spíše průměr. Ale když se podívám, co musím napsat za kód, aby mi vylezl jednoduchý dotaz... Jednodušší je ten dotaz napsat :)

Taky názvy metod nejsou moc obvyklé (a zdají se mi zbytečně dlouhé). Abych tu neobvyklost vysvětlil, většinou jsou tu dva typy knihoven -- jedny, které abstrahují nad databází, co to jen jde, a prakticky odstíní od psaní dotazů; druhé, které slouží k sestavování dotazů. Těm druhým, bych řekl, se <Q> blíží více. A ty většinou používají názvy metod stejné jako jsou klíčová slova v SQL. Ale neříkám, že to, jak to řešíš ty, je špatně. Každý je zvyklý na něco jiného.

Když už nemáš žádnou externí dokumentaci, bylo by dobré používat doc komentáře, aby si člověk alespoň mohl phpDocem udělat dokumentaci API.

Taky jsem v kódu našel, jak se ti u metod, které mají sloužit k hromadnému přidávání položek, opakuje taková "zrůdnost" :) Vypisuješ tam parametry pro nějakých deset možností a vlastně všechny krom prvního jsou nepovinné. Podíval bych se být tebou po fci func_get_args() -- http://php.net/func_get_args -- hodně ti usnadní právě tohle.

Abych to shrnul, <Q> bych asi nepoužíval, protože se nedá říct, že by práci moc usnadňovala.

Nahlásit jako SPAM
IP: 212.116.219.–
Jak se správně ptát? -> http://www.hash.cz/inferno/otazky.html[br][br] Po programování je člověk hladovej.
7. 6. 2008   #4
-
0
-

Diky za tip na tu funkci, o te jsem nevedel, to urcite predelam.

Jinak - toho, ze pro jednodussi dotazy je treba napsat oneco vice kodu, nez kdyz by jsi psal rovnou SQL prikaz, jsem si vedom. Oni ty SQL prikazy jsou tak strucne, ze pokud ma jit opravdu pouze o delku kodu, tak jsou samozrejme nejkratsi moznosti (i kdyz myslim, ze kdyz k tomu prictes i escapovani, tak jses tam, kam se dostanes s <Q>). Velka vyhoda <Q> tkvi v prehlednem tvoreni nejslozitejsich prikazu - myslim ze asi kazdy si radsi napise 15 kratkych a srozumitelnych prikazu, nez aby se patlal se dlouhatanskym SQL kodem roztazenym pres tri radky - a v rychle podpore strankovani a stromovych struktur. Tady uz jsou kody psane s touto tridou radove kratsi nez kdybysis to psal sam.

Dalsi vyhodou jsou ty hotove funkce, ktere umozni tapriklad jednim prikazem zjistit, zda nejaka polozka v DB existuje atd.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
7. 6. 2008   #5
-
0
-

Update. Diky bukaji za tu funkci, je to fakt o dost lepsi:

- predelany funkce pro hromadne vkladani
- pridany funkce addTableJoin (pro rychle pripojeni dalsi tabulky) a addTablesNN (propripojeni dalsi tabulky pres prostrednickou tabulku do vztahu n:n) - tyhle funkce o dost zkracuji kod toho examplu na Joiny
- pridany funkce quickGetSum,Avg,Max,Min,Count (to jsem okoukal z toho linku co dal sir_arthur - diky)
- pridana podpora pro STRAIGHT JOIN - takova blbost, ale docela se to nabizelo. Zajimalo by me, jestli to nekdy nekdo pouzil
- funkce setOption a setOptionGlobal byly slouceny do setOption - funkce si nyni rozhodne sama, jetli ma nastavenu ulozit jen lokalne nebo na globalnim kontextu
- pridana funkce addGroupingFields
- pridana podpora pro perzistentni spojeni
- pridany nastaveni ENGINE, DISABLE_ENGINE_CHECKS, FORCE_COMPACT_DATA_SYNTAX, FORCE_PERSISTENT a TABLE_INSERT_MODE - vsechny jsou popsany v zahlavi zdrojaku
- byl zmen zpusob jakym se predavaj flagy funkci run() - nyni se nejedna o pevne dane poradi parametru, jedna se o integer ziskany pomoci bitoveho skladani jednotlivych parametru
- opraveny ruzne bugy

Slibuju, ze dalsim krokem bude dukladne okomentovani vsech public funkci, aby se dala udelat alespon dokumentace pomoci PHPDocumentoru.

EDIT: jeste jsem trochu vylepsil website, checknete link v prvnim prispevku

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
D-Fox0
Stálý člen
7. 6. 2008   #6
-
0
-

to:CommanderZ:
Nikde jsem tam nenašel funci pro ukončeni spojení s db. Ta by se tam taky mohla objevit ne? :). Podobnou třídu jsem si chtěl taky udělat.. i když určitě ne tak rozsáhlou jak je ta tvoje... jen pro osobní použití. Ale určitě tu tvojí použiju jako inspiraci. Jinak dobrá práce :)

Nahlásit jako SPAM
IP: 89.176.62.–
7. 6. 2008   #7
-
0
-

D-Fox napsal:
to:CommanderZ:
Nikde jsem tam nenašel funci pro ukončeni spojení s db. Ta by se tam taky mohla objevit ne? :). Podobnou třídu jsem si chtěl taky udělat.. i když určitě ne tak rozsáhlou jak je ta tvoje... jen pro osobní použití. Ale určitě tu tvojí použiju jako inspiraci. Jinak dobrá práce :)



OK, pridam, to jsem nikdy nepouzival, uplne jsem na to zapomnel, diky.

Jinak - tenhle objektovy koncept musis dotahnout, jinak je prilis tezkopadny na to, aby ti nejak urychlil praci. Odmenou jsou ale neomezene moznosti a kdyz to obalis dostatkem ruznych "zkratkovych" funkci tak i rychlost - jinak tyhle zkratkove funkce a pak kod "co kdyby se to nekdy hodilo" (ktery tam ale musi byt, pokud se to pousti mezi lidi) tvori vetsinu objemu tridy.

Btw, ted uz obsahuje krasnych 149 funkci :D (tak 20-30 z toho jsou ale jenom aliasy).

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
sir_arthur
~ Redaktor
0
Stálý člen
8. 6. 2008   #8
-
0
-

no pekne, musim to dakedy poriadne prejst, ale vyzera ze by z toho mohlo byt nieco pouzitelne. a som rad ze link bol na nieco...

Nahlásit jako SPAM
IP: 82.119.117.–
@mattonik
8. 6. 2008   #9
-
0
-

a som rad ze link bol na nieco...


Sry, muzes mi to pls prelozit? nejak to nechapu...

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
sir_arthur
~ Redaktor
0
Stálý člen
8. 6. 2008   #10
-
0
-

ze bol na prospech :) uzitocny...

Nahlásit jako SPAM
IP: 82.119.117.–
@mattonik
Tomcat0
Newbie
8. 6. 2008   #11
-
0
-

"Btw, ted uz obsahuje krasnych 149 funkci" - Mozna, ze to je znakem toho, ze uzral cas na nejaky refactoring ;). Ale zase s tim ztrati ta jednoduchost no....na druhou stranu, ja to predtim stahl a kdyz sem videl 2000 radku tak sem si rekl, ze to je beze me :)

Nahlásit jako SPAM
IP: 62.24.93.–
"Nemůžete nikoho nic naučit, můžete mu maximálně pomoci, aby to sám v sobě nalezl. " Galileo Galilei
8. 6. 2008   #12
-
0
-

Tomcat napsal:
"Btw, ted uz obsahuje krasnych 149 funkci" - Mozna, ze to je znakem toho, ze uzral cas na nejaky refactoring ;). Ale zase s tim ztrati ta jednoduchost no....na druhou stranu, ja to predtim stahl a kdyz sem videl 2000 radku tak sem si rekl, ze to je beze me :)



ja vim ze je to hodne. Vim ze je to moc. Problem je v tom, ze to umi pomerne hodne ruznych veci a pokud si to ma zachovat tu jednoduchost, tak to proste jinak nejde.

Jedine, co by urcite slo odstranit jsou nektere ty aliasy, ale tech je tam par a take maji sve opodstatneni.

Nejlepsi by bylo to rozsekat do nejakych modulu nebo tak, ale to zase PHP neumi tak, aby to bylo moc pouzitelne.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Tomcat0
Newbie
8. 6. 2008   #13
-
0
-

Tak ono se ti tam trosku nabizi oddelit to zapouzdreni databazovych funkci PHP od funkci, kterymi s temi daty dale manipulujes. Tam by se velmi pravdepodobne dala vymyslet nejaka pekne pouzitelna rozhrani pro ty manipulacni funkce. To jsou veci, ktere urcite muzes udelat ty sam, PHP co se tohodle tyce neumi akorat package (leda tak na urovni phpdocu, ale to sme krapek jinde), na ktery je tohle imho preci jen trosku malej ptacek. Pak by se to dalo zobecnit i to zapouzdeni db funkci, ale to bys de fakto vytvarel tridy, ktere uz davno existuji v PEARu.
Tezko rici, co by na to rekl prumerny uzivatel tve tridy :)

Nahlásit jako SPAM
IP: 62.24.93.–
"Nemůžete nikoho nic naučit, můžete mu maximálně pomoci, aby to sám v sobě nalezl. " Galileo Galilei
8. 6. 2008   #14
-
0
-

Tak ono se ti tam trosku nabizi oddelit to zapouzdreni databazovych funkci PHP od funkci, kterymi s temi daty dale manipulujes.


Tohle me stejne ceka, pokud neustoupim ze svych pozadavku, a udelam tam podporu vice ruznych DB enginu. Ale tim se to zase akorat nafoukne.

Ja bych si predstavoval, ze by se proste nacitaly jen ty casti, ktere by uzivatel zrovna potreboval/chtel. Tim myslim - nekazdy (a kdyz uz tak urcite ne vzdy) vyzije stromovani, strankovani nebo treba prochazeni zahlavimi sloupcu...

Jinak nova verze:
- pridana funckce destroyConnection
- vsechny public funkce jsou nyni alespon zevrubne okomentovany

Uz zacinam pripravovat full-scale dokumentaci, bude to ale beh na dlouhou trat, protoze tam bude muset byt tech textu opravdu hodne, aby to melo smysl.

EDIT: Vyresil uz jsem snad posledni bug s animacemi na tom webu. Pfuj, uz se to snad vsechno hybe jak ma.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
25. 6. 2008   #15
-
0
-

Tak po skoro trech tydnech dalsi update (verze 1.0 beta 2b)

Novinky:
- Connection Managment (sprava pripojeni) je nyni plne pripraven a funkcni. Diky nemu muze <Q> jednodusse pracovat s vice pripojenimi najednou aniz by uzivatele otravovala zbytecnostmi. S tim souvisi pridani funkce activateConnection.
- pridana funkce addConditionBetween - ostuda ze az ted
- pridana funkce quickGetValue pro okamzite ziskani jednoho pole z DB

A co je nejdulezitejsi - byla spustena on-line dokumentace
Sice jsou tam zatim jen tri funkce (kompletni connection managment), ale alespon je to proof of concept. Skript je az na osetreni par neobvyklych situaci hotov;

Alespon jedna ukazkova funkce:
http://q.php5.cz/doc.php?action=item&id=23

Tato dokumentace bude navic brzy open-source - bude slouzit jako on-line vykladni skrin <Q>, na ktere bude demonstrovana jeji sila.


Changelog, stazeni i aktualni zdrojovy kod najdete samozrejme opet na webu q.php5.cz

http://q.php5.cz

PS: Na celem webu nyni pouzivam podstatne lepsi syntax higlighter, ktery je hlavne vyrazne rychlejsi nez Geshi, ktere jsem puzival az doted.

Nahlásit jako SPAM
IP: 81.30.238.–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 41 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý