Názov projektu: DotPHP Krátky popis: DotPHP je framework, teda akysi zakladny podklad pre pracu s inymi castami. Medzi dalsie casti patria web komponenty, formforge, phpbaseclasses a NuSOAP. Zoznam clenov: Ja akelavlk - team leader, vytvoril som hlavnu filozofiu k web componentam. Tak isto som prispel k programovaniu DotPHP. S casti som vytvoril aj filozofiu tohoto frameworku. btakita - pomaha pri vyvoji frameworku. Ma vlastny projekt (POOF). Z projektu POOF sme tiez pouzili par veci pri tvorbe frameworku. Islo hlavne o pouzitie metod, takze uzivatel nepristupuje k udajom priamo ale cez metody. fflush - Pomahal pri vyvoji formforge. V sucastnosti dost necinny. freax - Ma vlastny projekt nieco ako nevizualne komponenty. Dost pomala s frameworkom ohladne filozofie. jameshoo - team leader pre subprojekt FormForge (FF). FormForge ma tiez za sebou istu historiu. Jim ma kontaktoval ked uz mal hotovu kostru projektu. Potom sa niekolko krat prerabala. pknapp - Manager web site. Tester. Pomava pri testovani, a obcas updatuje web site. shiziye - Ma vlastny projekt WOOP. Polozil zaklady DotPHP. Vychadzal som s jeho filozofie, ktoru je mozne vidiet prave v jeho frameworku WOOP. V sucastnosti sa projekt WOOP nevyvija. Dalsi aktyvny clenovia. jwilde - Vytvoril PHPMVC. http://sourceforge.net/projects/phpmvc. Niektore feature boli vyuzite aj v DotPHP. John pomaha aj nadalej, hlavne skusenostami. Programovat s nami velmi nechcel, hlavne kvoli tomu, ze ma vlastny dost silny framework. Do projektu sme ho zaradili ako cestneho clena. Ciele: Vytvorit konkurencnu platformu pre ASP.NET, alebo aspon priniest silny framework pre PHP. Odbremenit vyvojarov od pisania HTML kodu. Vyvoj web stranok v plne objektovom prostredi. URL:webcomp.sourceforge.net, sourceforge.net/projects/webcomp Historia: Vsetko sa to zacalo web komponentami. Tie dokazali byt integrovane do normalnej sajty a nevyzadovali ziadny framework. Ako vsak pribudali, prisla na rad otazka spolocnej zakladne teda frameworku. Zacali sme hladat na webe framework, ktory by vyhovoval filozofii web komponentam. Ktora je v principe jednoducha, take komponenty, ktore by skor pripominali skutocne applikacie, ktore pozname z (X) windows. Avsak ziadny z doterajsich frameworkov nepodporuje evend handling, ani nieco take ako "real application". Popri tom vznikol projekt FormForge. Co je vlastne vizualne studio. Je to WYSIVYG editor, ktory bezi na webe. Zatial su dostupne len vyvojarske verzie. Posledna releasnuta verzia je verzia 2.1. Chysta sa trojkova verzia, ktora ma implementovane nieco podobne ako Drap&Drop. Skratka zobierem komponentu a hram sa s nou na forme, ktora je vlastne HTML subor. Releasy web component, boli spociatku velmi sporadicke. Jednotkova verzia pouzivala, este define.php subory, ktory uz dvojkova verzia nemala. Prva dvojkova verzia bola vypustena niekedy na jesen roku 2002. Potom prislo dalsich 11 subverzii. Dvojkova verzia uz mala nieco take ako server clipboard. Priblizne koncom roka bola releasnuta prve verzia FF. Tajne sme dufali, ze sa najde nejaky tester, ktory by s tym pomohol. Prva verzia, bola naozaj dost rozbita. Neskor, bola vydana druha verzia, uz o trosku lepsia. Pridali sme fram na vyber web component. Aj ked skutocne komponenty to stale niesu. Vlastne sa len pregenerovava HTML kod podla nastavenia. Podpora web komponent sa chysta az ked sa podari vyvynut fakt stabilne jadro FF. Web komponenty, sa zatial transformovalil dalej. V tomto stadiu sme boli len traja aktyvny clenovia, ja, jameshoo, a pknapp. Jameshoo, ma vlastny projekt a na framework mu nezvysuje cas. Pknapp je tester a programovat nechcel z casoveho dvodu. Ja som si na framework sam netrufal. Oslovil som teda projekt adminou inych projektov. Zacali sa teda spajat project admini z projektov, Ako POOF, WOOP, PHPMVC. Kedze to nemal kto pisat. (Ach ten open source) v konecnom dosledku som to pisal ja. Ked uz sa mi zdalo, ze je to celkom dobre, prerobil som par komponent pod DotPHP a poslal som prvu neoficialnu verziu DotPHP do nasho mailing listu. Bohuzial sa az tak velmi nepacila. Islo hlavne o to, ze nepodporovala mobilne komponenty. Co su vlastne komponenty ktore by mali generovat WAP stranky. Takze som to este precistil a znova prerobil komponenty. Tak vznikla verzia DotPHP 0.2. Ma osobitny adresar v CVS repository s nazvom DotPHP2. Takze mozete porovnat obe verzie. Zohnal som jeden projekt na ktorom som mohol odskusat DotPHP. Tym projektom je stranka www.chempor.sk. Tato stranka bezi na DotPHP 0.1 a jej administratorska cast bezi na DotPHP 0.2. Tu historia konci a zacina sucastnost. Detailny popis: Pouzivane PHP najlepsie poslednu moznu verziu. Vzhladom na obmedzenia PHP4, sa prechadza na PHP5. DotPHP mozno nikdy nebude releasnute pod PHP4, problem tvoria hlavne privatne premenne. DotPHP vyzaduje k svojej cinnosti session. Nepotrebuje ziadnu databazu ani specialne rozsirenia PEAR. DotPHP ma niekolko casti. Vsetko zacina pri frameworku. Ktory podporuje event handling, server clipboard, web services, cachovanie. Nad tym sa nachadzaju komponenty. Pricom komponenty tvoria formu. Forma sa da editovat cez FormForge. FormForge je vizialne studio. Myslim, ze ked to cele bude fungovat ako ma bude to vazna pecka. Standardne bude totiz DotPHP dodavany so vsetkymi sucastami. DotPHP obsahuje nasledujuce technologie. Event handling - Podla eventu sa vygeneruje stranka. Pricom na zaciatku je volana procedure form_create, ktora vytvori celu site. HTML kod je umiestneny do pola a toho pole sa uklada do session. Cache - HTML kod ktory sa vygeneroval v predchadzajucom kroku je len zmeneny novym eventom to znamena nieco zakazem nieco povolim. A tento kod sa znova zobrazuje. Je to rychlejsie ako generovat celu stranku znova a znova. Server clipboard - Velmi jednoducha implementacia OLE technologie. Funguje to celkom jednoducho. Pri ukladani premennej do session poviem, je to obrazok, alebo zvuk. Ak ina aplikacia alebo komponenta pozera do tej istej session, presne vie ze ide o obrazok. Ten moze vytiahnut a zobrazit. Samozrejme nemusi ist len o obrazok alebo zvuk. Data storage - Pracuje opat zo session, uzivatel si povie, ze potrebuje nejaku premennu v applikacii tak ju jednoducho ulozi do session, a potom uz len pouziva znova a znova. Nic sa neprenasa medzi serverom a clientom. Len udaje z foriem. Ostatne technologie ako web services su prebrate s ostatnych projektov. Je to napriklad NuSOAP, ktory sa pouziva pre web services. Web komponenty sa delia na dve casti. Vizualne a nevizualne. Medzi vyzualne patri napriklad Button, alebo StrGrid. Medzi nevyzualne Item, Strings. Nevizualne komponenty ma na starosti freax, ktory ma vlastny projekt PHPBaseClasses, su to akesi inteligentnejsie nevizualne komponenty ako news, ci phorum. Komponenty sa nenapajaju priamo na zdroj dat, takze ako zdroj dat pre StrGrid ci news sa moze pouzit naozaj hocico. FormForge - Rodilo sa naozaj velmi tazko, nieje to az take lahke ako sa zda. Velmi sme pri funkcionalite vychadzali s DELPHI. Vlastne prave k tomu smerujeme. Zatial to tak nemusi vyzerat. Pamatam sa, ked ho jameshoo zacal programovat, vravel ze neovlada JavaScript ani PHP. Casom sa vsak zacal zlepsovat, postupne zacal pouzivat objekty. Coskoro dufam, dorobime spolocne aj podporu pre DotPHP a web komponenty. Treba vsak ustalit technologie aby nedochadzalo k castym zmenam. Lebo ked sa stale meni, filozofia je potrene stale cosi prerabat. A tak sa len preraba a preraba. Takze to este raz zhrniem. DotPHP obsahuje. Web componenty - tieto komponenty su len vizualneho typu. PHPBaseClasses - Komponenty nevyzualneho typu. Klodne by mohli byt zaradene k web komponentom, ale autor tohoto projektu to nechcel. FormForge - Vizualne studio v ktorom sa da forma nakreslit. Vieco ako WISIWYG ale pracujuci On line na internete. NuSOAP - Je samostatny projekt. Do DotPHP bol zacleneni z dovodu podpory web services. Sponzory: Nikto. Mozem vsak podakovat firme Computel, kde som mal moznost vyvijat dvojkovu radu web komponent a hned ju pouzit na realnych projektoch. Referencie: www.b4b.sk - Na tomto projekte som robil ja, takze som to aj implementoval, www.phpmvc.net - Autor pouzil web komponenty dvojkoveho radu a prerobil jednu z nich tak aby podporovala phpMVC. Neviem ci chysta prerobit aj ostatne komponenty. www.chempor.sk - Posledny projekt ktory pouziva DotPHP 0.1 a 0.2. A neoficialnu trojkovu verziu web komponent. Plán ďalšieho postupu: Dovyvyjat DotPHP s komponentami a FormForge do pouzitelneho stavu. Zladit nove technologie, aby boli dostatocne stabilne. Zhodnotenie projektu: Myslim, ze projekt je este mlady a treba cas na dozretie. Frameworkov je vela, je nam jasne ze toto je jedna z cies. Je len otazka, ktory framework bude dostatocne silny a hlavne schopny prerazit. Zaver: Cital som pravidla, a zistil som, ze nas projekt nevyhovuje jednemu z pravidiel. Totiz, nas tym nema nadpolovicnu vacsinu slovakov. Jediny slovak som ja zakladatel projektu. Prosim touto cestou o udelenie vynimky. Priklady: Chcem este trosku priblizit technologiu DotPHP a uvediem par prikladov. Zacnem typickym prikladom Hello World. font_family = 'Arial'; $dp->caption = 'hello world example'; $dp->bgcolor = '#ffffff'; $dp->font_size = 18; $dp->render_start(); //Tu zacina generovanie HTML function form_create() { //Tu zacina funkcia ktora sa vola vzdy na zaciatku global $dp; $lab = new llabel('lab'); $lab->caption = 'Hello world'; $lab->render(); } $dp->render_end(); //Ukoncenie stranky. ?> Zda sa to dost riadkov, vygenerovany kod vsak obsahuje komplet zaciatok HTML stranky vratane urcenia DOCTYPE a kodovej stranky. V pripade ze chceme aby sa na kliknutie na label zmenil povedzme caption napiseme. <? include_once('web.php'); include_once('web/llabel/object.php'); $dp = new web('dp'); $dp->font_family = 'Arial'; $dp->caption = 'hello world example'; $dp->bgcolor = '#ffffff'; $dp->font_size = 18; $dp->render_start(); //start DotPHP function form_create() { global $dp; $lab = new llabel('lab'); $lab->caption = 'Hello world'; $lab->on_click = "my_first_event"; //Aky event sa na volat pri onclick $lab->render(); } function my_first_event() { global $lab; $lab->caption = 'I change my world'; $lab->render(); //Prekreslenie labelu } $dp->render_end(); ?> Architektura: Cela architektura je trojstupnova (Obr. 1). Vsetko sa zacina u frameworku. Nad nim pracuju akesi zavadzace, ktore generuju zaciatok a koniec stranky. Pricom stranka moze byt HTML, WAP alebo nieco uplne bizardne. Na obr. 1 ako xxx. Nad tymto objektom stoja web komponenty. DotPHP uklada, vsetok HTML vystup do jedneho pola, pricom si pamata, ktory objekt kam zacal zapisovat. Lepsie je to vydno na obr. 2. Do session sa zapisuju aj samotne objekty. Posledna verzia pouzivala jednu metodu na vykreslovanie a prekreslovanie objektu. Aktivita: Co sa tyka aktivity projektu. Neriadil by som sa cislami na SourceForge prerabaju teraz system pre generovanie statistiky, nefunguje ani pocitanie downloadov. Demo: akela.host.sk/demo/ S pozdravom tim projektu DotPHP Jan Sunavec