Nic się dzisiaj ciekawego nie wydarzyło.
Głównie rozchodziło się o to, że
- Po kija robić nowy system szablonów, skoro jest już tyle gotowych. A co, gdy żaden nam nie odpowiada?
- Podążanie dokładnie tą samą drogą, co Smarty.
Z tym drugim punktem w ogóle się zgodzić nie mogę. W składni OPT struktury kontrolne znane z języków programowania docelowo mają być jedynie uzupełnieniem, gdy czegoś nie idzie wykonać w normalny sposób, a grafik ma odpowiednią wiedzę. Jedynym powodem, dla którego obecnie jest na odwrót, były prace nad dopieszczaniem samego mechanizmu kompilującego itd. Przecież od samego początku prac pokazywałem przykład ludzko zrobionych sekcji niewymagających bawienia się iteratorami, tablicami itd. z poziomu szablonu. Wszystko odbywa się łatwo i przyjemnie. Ba! Zaimplementowałem je jako pierwszą w ogóle instrukcję sterującą! Później doszło przyjazne deklarowanie zmiennych, a w wersji 0.2.0 pojawi się już cała rodzina komponentowych instrukcji. Dalej... co by tu mogło sprawić trudność... składnia funkcji? Nie ubliżajmy poziomowi edukacji matematyki w szkołach świata. Strukturę
nazwa(parametry) dzieci poznają przecież już w gimnazjum. Składnia bloków? W stopniu podstawowym identyczna, jak w WACT'ie; dopiero na poziomie "advanced" pokazuje pazury. Bezsensownie wygląda też argument, że "trzeba się uczyć nowego języka programowania". Jeśli chce się korzystać ze struktur kontrolnych, to i owszem. W podstawowym zakresie jednak całość sprowadza się do tego, że znaczniki OPT zamykane są w nawiasach klamrowych, a parametr instrukcji podajemy po znaku równości. No chyba że podchodzimy do tego na takiej zasadzie, że wszystko, co nie jest ograniczane przez < i >, nie ma nazywanych parametrów i nie nazywa się XML, jest "beee".
Apropos WACT'a. Często był stawiany za rozwiązanie przyszłości. Postanowiłem przyjrzeć się co poniektórym przykładom z dokumentacji. Na początek tworzenie list. Czy ktoś mógłby wytłumaczyć, na czym polega "wyższość" takiego rozwiązania:
<list:LIST id='ListExample'>
<TABLE BORDER="1" ALIGN="CENTER" CELLPADDING="5">
<list:ITEM>
<TR>
<TD>{$First}</TD>
<TD>{$Last}</TD>
</TR>
</list:ITEM>
</TABLE>
</list:LIST>
Nad takim:
<TABLE BORDER="1" ALIGN="CENTER" CELLPADDING="5">
{section=ListExample}
<TR>
<TD>{$ListExample.first}</TD>
<TD>{$ListExample.last}</TD>
</TR>
{/section}
</TABLE>
Popatrzmy dalej:
<img id="TheLogo" src="http://ch.php.net/images/php.gif" runat="server">
<h2>Select a Logo</h2>
<p><a href="?logo=php">PHP Logo</a> | <a href="?logo=mysql">MySQL Logo</a></p>
Przykład polega na tym, że dzięki atrybutowi
runat="server" możemy z poziomu kodu PHP zmieniać zawartości atrybutów, w tym wypadku ścieżkę do loga. A zmienianie tych wartości polega na zabawie DOM'em (!). Nie twierdzę, że pomysł modyfikacji kodu HTML z poziomu PHP to idiotyzm, ale pomysłodawca takiego akurat jego wykorzystania chyba kosi trawnik przed domem kombajnem, a po piwo do sklepu lata odrzutowcem :). Ot, jak to robią w Polsce:
<img id="TheLogo" src="{default($logo, "http://ch.php.net/images/php.gif")}">
<h2>Select a Logo</h2>
<p><a href="?logo=php">PHP Logo</a> | <a href="?logo=mysql">MySQL Logo</a></p>
I aż się pokuszę o sprawdzenie na osobie nieumiejącej programować, czy składnia tego cuda sprawia jakieś trudności :). Moje odczucia wobec bardziej złożonych komponentów typu kalendarz, czy mechanizm dzielenia na strony są mieszane. Z jednej strony grafik ma do tego gotowe narzędzie, a z drugiej... ma gotowe narzędzie, niekoniecznie konfigurowalne w taki sposób, jaki by chciał. Wszystko zależy od punktu widzenia i naszych wymagań.
Refleksja jest prosta. Ludzie chcieli mieć dostęp do struktur kontrolnych z poziomu OPT, to go dostali. Ludzie chcą w pełni komponentowo składać sobie szablony, też to dostaną. Jak szaleć, to na całego.
Jeszcze jedno słóweczko... w ww. temacie znalazłem taki dopisek: OPT nie ma dla mnie najmniejszego sensu. Bo co? Będzie szybsze? Mniej przeładowane? - Już jest na dobrej drodze by być w tej samej wadze co Smarty. (c) chmolu, wszelkie prawa zastrzyeżone. Więc... jeśli chodzi o możliwości, to co w tym złego, że jest ich dużo? W OPT w dodatku można niepotrzebne wywalić z kodu przy pomocy konfiguratora. Zaś biorąc pod topór wielkość kodu, to źródła OPT zajmują mniej miejsca, niż sam kompilator Smarty'ego. WACT TemplateView zajmuje natomiast 523 kb, po uwzględnieniu rozmiaru klastra będzie to 828 kb.
Oczywiście cały powyższy tekst nie oznacza, że nie zgadzam się ze wszystkim, co tam jest powiedziane. Zmotywował mnie on głównie do przyłożenia jeszcze większej wagi do komponentów zastępujących instrukcje kontrolne. I rzeczywiście, skoro przepuszczanie szablonów przez validatory XHTML jest takie ważne, popracuję i nad tym. Przyszła mi też na myśl możliwość całkowitego usunięcia domyślnego zestawu instrukcji i funkcji OPT.
Powrót
Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi
być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca
i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw
uważnie ją przeczytaj.
Napisał eshaw w piątek, 6 maja 2005 o 16:27
nie lubie argumentow typu 'po co to robic, jak juz jest' - gdyby kazdy tak myslal stanelibysmy na poziomie pierwszych wynazalkow - telefonow na korbke, telewizorow czarno-bialych i samochodow o mocy 1KM. I to jakby dobrze poszlo.. Gdyby nie szablony grafik musialby wiecej wprowadzac danych - wiec nauka kilku prostych i logicznych nazw i znacznikow chyba nie jest wielkim problemem..