Dziś jest sobota, 10 stycznia 2009 roku (z kalendarza...)

Komponenty w OPT

Icon

13.06.2005, 22:15

Projekty

Komentarze (7)

Powrót

Pora na hardcore'a, jak to się mówi. Nie dość, że zdecydowałem, że finalna wersja 0.2.0 będzie oznaczona jednak cyferką 1.0.0, to jeszcze wpadłem na znakomity pomysł. Jeszcze raz zasiadłem nad opiniami ludzi zakochanych w WACT'ie i stwierdziłem, że w zasadzie jest możliwe stworzenie naprawdę wysokopoziomowych instrukcji w OPT, które całkowicie deklasowałyby Smarty'ego.

Nie, nie chodzi tu o takie zwykłe instrukcje, jak do tej pory. Mam na myśli zupełnie nowy rodzaj znaczników ochrzczony mianem komponentów. Co jest w nich takiego niezwykłego? Da patrijet:

  • Są reprezentowane przez obiekty.
  • Mogą zawierać podelementy.
  • Do komponentu w szablonie wcale nie musi zostać przypisany żaden obiekt. Wtedy zostanie po nim puste miejsce.
  • Obiekt można stworzyć samemu w skrypcie, tam skonfigurować i zładować go metodą assign() lub też zmusić do tego OPT.

Myślę, że takie narzędzie się Wam spodoba, gdyż daleko odstaje od tego, do czego przyzwyczaja Smarty i daje zupełnie nowe możliwości, szczególnie w dziedzinie projektowania systemów modułowych.

Dla zaostrzenia apetytu zarzucę hipotetycznym kodem. Na początku szablon wymuszający stworzenie obiektu komponentu przez OPT. Jest to prosty komponent do generowania list "select" w formularzu, do którego kierujemy dane z bloku $something. Komponent zawiera podelementy reprezentujące dwie dodatkowe informacje, które można wyświetlić: dodatkową informację i komunikat o źle wypełnionym polu. code{selectComponent datasource="$something"} {onerror message="error" position="up"} {@error} {/onerror} {onmessage message="lala" position="down"} {@lala} {/onmessage} {/selectComponent}/code Samą listą zajmie się komponent. Jeśli nie chcemy wcale wymuszać stworzenia obiektu, używamy instrukcji {component}: code{component id="some_id" datasource="$something"} {onerror message="error" position="up"} {@error} {/onerror} {onmessage message="lala" position="down"} {@lala} {/onmessage} {/component}/code Tym razem musimy także ustawić ID, pod którym instrukcja ma się spodziewać gotowego obiektu. Jeśli go nie znajdzie, to nic nie zrobi i po kłopocie. Tja... i tu się sam zagiąłem. Jak niby w tym rozwiążę problem kompilacji, skoro teraz komponent, a zatem też i generowany przezeń kod PHP dla kompilatora określam w momencie wykonywania, który jest później? :). No nic, coś się wymyśli. Tyle rzeczy rozwiązałem, to i to niestraszne. W sumie ten pomysł ma dopiero 37 minut, więc mają prawo być w nim jeszcze pewne luki natury technicznej :).

Powrót

Komentarze

Napisał splatch w poniedziałek, 13 czerwca 2005 o 23:08

Spójrz na Prado, tam są same komponenty ;)

Napisał Zyx w wtorek, 14 czerwca 2005 o 17:44

No... nie są to dokładnie takie komponenty, o jakie mi chodzi. Ponadto kłania się inna architektura. Ale będzie dobrze, o to się nie bój :].

Napisał shw w środę, 15 czerwca 2005 o 14:57

I dochodzimy do momentu granicznego i w tym momencie nalezy sie zastanowic - gdzie konczy sie "szablonowanie", a gdzie zaczyna programowanie - no i czy tak naprawde warto te rzeczy laczyc?

Napisał Zyx w środę, 15 czerwca 2005 o 17:00

Tja, chyba sobie wpisy pomyliłeś :). Bo co komponenty mają wspólnego z "programowaniem", to nie wiem. Toż po to je robię, by w szablonach było jak najmniej programistycznych konstrukcji w stylu "if".

Napisał shw w piątek, 17 czerwca 2005 o 14:10

ten wpis ten, bo nie wmowisz mi, ze code{component id="some_id" datasource="$something"} {onerror message="error" position="up"} <font color="red">{@error}</font> {/onerror} {onmessage message="lala" position="down"} <i>{@lala}</i> {/onmessage} {/component}/code nie jest kodem programistycznym..

Napisał Tuner w sobotę, 18 czerwca 2005 o 12:32

Chciałbym, żeby można było komponenty wyłączyć (jak i inne bardziej egzotyczne bajery) dla uzyskania większej szybkości działania.

Napisał splatch w czwartek, 23 czerwca 2005 o 09:56

Komponenty z punktu widzenia programisty mają umożliwić refaktoring kodu. To samo tyczy się szablonów - zamiast w 2 miejscach pisać to samo, ale z innymi zmiennymi używa się komponentu, który zwróci odpowiedni kod. IMO gra warta świeczki.

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

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.

© Tomasz "Zyx" Jędrzejewski 2005 - 2009 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia