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.
Fórum › PHP
<Q> - nabušená PHP třída pro práci s MySQL
fuha, no zaujimave. 2000 riakdov je teda dost, ale tak asi to aj hodne vie, neskumal som to este moc podrobne... ale rozhodne dobra praca.
(pre inspiraciu http://codeigniter.com/user_guide/database/active_record.html)
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.
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.
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
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 :)
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).
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...
a som rad ze link bol na nieco...
Sry, muzes mi to pls prelozit? nejak to nechapu...
ze bol na prospech :) uzitocny...
"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 :)
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.
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 :)
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.
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.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Programator PHP, HTML, MySQL hleda praci nebo brigadu — založil klinki
OOP - MySQL trida - vyreseno - preklep v construct — založil DarkLifeCZ
C# knihovny pro praci s webkamerou — založil Tony
Jazyk pro práci na internetu — založil dragon124
Nefunguji funkce pro praci s db — založil tribalcz
Moderátoři diskuze