Jun 19 2005
Thor – postępy
Filed under Thor by Łukasz Dywicki
Prace nad Thorem posunęły się do przodu. Mam teraz podstawowe klasy – TComponent, TParser (parser komponentów), ConfigParser i fabrykę do niego. Przy okazji chciałbym się pochwalić rozwiązaniem, jakie wymyśliłem.
Podobnie jak w Prado każdy komponent to klasa, która ma określone metody i atrybuty. W We wcześniej wymienionym frameworku w pliku konfiguracyjnym komponentu definiuje się metody do pobierania/ustawiania atrybutów poprzez wpisanie w pliku specyfikacji danego komponentu. U mnie wygląda to nieco inaczej – klasa TComponent, z której dziedziczą wszystkie pozostałe komponenty ma zaaplikowaną metodę __call(), która umożliwia tworzenie ‘wirtualnych metod’. Tzn. metod, które nie istnieją w klasie macierzystej.
Może przedstawię fragment pliku konfiguracyjnego:
[properts] Action = text Method = text DefaultLogin = text DefaultPassword = text [events] OnClick OnSubmit [Action] get = true set = true [Method] get = true
Teraz, chyba będzie łatwiej zrozumieć ;), wszystkie sekcje, które rozpoczynają się od wielkiej litery traktowane są jak atrybuty komponentu. Sekcja Method odnosi się do atrybutu Komponent::$Method. Teraz, gdy w sekcji Metod jest ustawiona dyrektywa get na true będzie można odwoływać się w kodzie do tego atrybutu poprzez getMethod w szablonie.
Wiem, że to troszkę niejasne, ale kiedy uda mi się stworzyć jakiś działający przykład to nie omieszkam pokazać. Przykładowy kod szablonu to:
<thor:Komponent ID=”C1” params="true">Tutaj jakoś kod</thor:komponent> tutaj kod html <thor:Inny ID="C2" onclick="doSth();" />
hehe :)
Identyczny system szablonow chce napisac, ale mam jeden problem, mianowicie Nie wiem jak parsowac takie cacuszko. To co chce osiagnac, to Otrzymanie listy, ktora bedzie zawierala obiekty – takie tokeny, Kazdy obiekt ma jakis typ i parametry np: Typ -> tresc – czyli np: html, albo jakis inny content, a inny typ to np: ComponentOpen, ktor to jest tagiem otwierajacym komponent, Pozniej tag zamykajacy ComponentClose. Myslalem moze o uzyciu narzedzia do parsowania xml…, ale wtedy tez caly dokument musi byc poprawny
Jest coś takiego jak WebFramework – w nim jest to zaimplementowane bez wyrażeń i parsowania XMLa. Po prostu krok po kroku od < do >.