Daniel Częstki

Daniel Częstki senior php developer

Temat: Nowy system szablonów Twig

Hej

Natknąłem się na ciekawy projekt. Może ktoś z Was już użył tego systemu szablonów o nazwie twig.
Jak wrażenia ?

http://www.twig-project.org/

konto usunięte

Temat: Nowy system szablonów Twig

"nowy" ??? 2009 ??

konto usunięte

Temat: Nowy system szablonów Twig

Witam,
z Twiga nie korzystałem ale natknąłem się na niego przy okazji zaglądania w Symfony. Wpadł mi w tym czasie w oko.
Muszę przyznać że ma dość czystą składnię. Bardzo mocno przypomina mi Blitza (albo to Blitz przypomina mi Twiga, sam nie wiem).
Sam w jednej firmie dość dużo pracowałem z Blitzem. Strona projektu:
http://alexeyrybak.com/blitz/blitz_en.html

Twig wydaje mi się ciekawym systemem szablonów ale zawsze szukałem czegoś "czystego". Czegoś co pozwoli wprowadzić webmastera dość łatwo bez zawiłych tłumaczeń lub robienia z niego programisty. Jednym z najgorszych systemów szablonów pod względem składni wg mnie jest Smarty. To właściwie powielanie PHP w szablonie co nie ma najmniejszego sensu.
Twig mi się bardziej podoba ale też nie do końca o to mi chodziło z szablonami. W sumie Blitz i Twig są bardzo do siebie zbliżone. Tu już kwestia gustu. Preferuje Blitza ze względu na większe możliwości (w moim przekonaniu).

Co do Blitz to:
~ podoba mi się koncepcja bloku i kontekstów. Bloki podobnie jak w Twig służą do iteracji tablic, gdzie nazwa bloku to po prostu zmienna przypisana do szablonu. Wewnątrz bloku używamy zmienne tak jak mamy indexy tablicy.
~ bez problemu możemy np traktować szablon jako zbiór mniejszych elementów. Operując kontekstem możemy w jednym pliku zawrzeć kilkanaście elementów strony i parsować tylko te fragmenty które nas interesują
~ można "zrzucić" szablon i dostać array który pokazuje nam jego strukturę. Ogromnie przydatne narzędzie jeżeli np chcemy dać możliwość komuś przygotować szablon pod nasz projekt i wymusić to by znalazły się w nim wymagane minimum elementów. Czy też chcemy skontrolować to czy szablon jest prawidłowy.
~ szablon nie musi być plikiem. Możemy zamiast pliku podać ciąg znaków do sparsowania. Więc właściwie nic nie stoi na przeszkodzie by w teorii zaszyć fragment szablonu w kodzie PHP (na wewnętrzne potrzeby), umieścić domyślny szablon w aplikacji który może być nadpisany naszym w pliku lub cokolwiek innego.
~ możliwe stało się od jakiegoś czasu wywoływanie funkcji PHP itp w prosty i łatwy sposób: {{ php::doSomething() }}
~ możemy dołączać szablony do szablonów. Mało tego, można robić takie kombinacje jak np załadowanie szablonu z bazy czy klasy w postaci ciągu znaków i umieszczenie w nim instrukcji by załadować inny szablon już z pliku.
~ bloki można zagnieżdżać, możemy je iterować dowolnie, posługując się kontekstem. Np taka konstrukcja:


{{ BEGIN test }}
{{ BEGIN darek }}
{{ $a }}
{{ END }}
{{ END }}


Zakłada że mamy array `$test` który ma w sobie klucz o indexie `darek` w którym jest klucz `a`. I takie tablice możemy interować.

Jak iterujemy ściężkę `/` to iterujemy główny szablon (cały) ale nic nie stoi na przeszkodzie by iterować blok jak `/test/darek`. Gdzie możemy to podawać przy parsowaniu lub po prostu ustawić kontekst na fragment szablonu i na nim operować. Pojedynczy blok pozwala na sprawdzenie czy iterowany jest pierwszy, ostatni, parzysty, nieparzysty element itp...

Blitz do niedawna prawie nie miał instrukcji sterujących. If był bardzo ubogi i sprowadzał się do zapisu {{ if($a, 'tak', 'nie') }} czy jakoś tak (już ponad rok z nim nie pracowałem więc głowy nie oddam za dokładność zapisu). W końcu dorobił się IF i paru innych drobiazgów :-D Nie wiem jak jego rozwój poszedł od wersji 0.7. Warto popatrzeć.

Zaletą Blitza jest szybkość. To chyba najszybszy system szablonów z jakim miałem do czynienia. Jedyne co jest szybsze to wymieszanie kodu HTML i PHP. Dodatkowo ma bardzo czystą składnie. Miałem okazje 3 miesiące temu wprowadzać znajomego w ten system szablonów, gdzie kolega w życiu nie programował nawet pralki. Poradził sobie bez problemu znając tylko html i css.

Wady są właściwie dwie. Pierwsza to taka że osoby które uwielbiają trzymać logikę aplikacji w szablonie będą strasznie narzekać. Blitz wydaje mi się zawsze wychodził z założenia że logika powinna zostać po stronie PHP. Troszkę się zmieniło od tamtego czasu ale Blitz zawsze był robiony z tym przekonaniem.
Druga wada (najważniejsza, przez którą właściwie Blitza prywatnie nie stosuje) to to że jest on rozszerzeniem do PHP. Co za tym idzie, trzeba go umieć zainstalować (z czym nie ma problemów ktoś kto choć raz coś takiego robił). Dlatego czarno widzę to byście mogli go używać na hostingach nie-dedykowanych. Choć z drugiej strony firma Hekko bez problemu uruchomiła mi blitza na moim hostingu dzielonym. Kwestia szczęścia zapewne.

PozdrawiamDariusz Półtorak edytował(a) ten post dnia 17.05.11 o godzinie 09:47
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Nowy system szablonów Twig

siablony sa be :P

konto usunięte

Temat: Nowy system szablonów Twig

Łukasz C.:
siablony sa be :P

ano są.. a jednocześnie są bardzo często używane :D
I to co powiedział Dariusz - Smarty może i jest jednym z najgorszych systemów szablonów pod względem składni, ale jest (był?) też dosyć popularny :D To tak jak z muzyką POP, niby nic wartościowego, ale wiele osób jej słucha :DPiotr Lewandowski edytował(a) ten post dnia 17.05.11 o godzinie 10:48

konto usunięte

Temat: Nowy system szablonów Twig

O Twigu:
Idea świetna, system też niezgorszy ale...
Subiektywne "ale", tylko całkowicie odrzuciło u mnie Twiga - nowa dodatkowa składania i tylko tyle.


{{ var }}
{% for user in users %}


Notorycznie zapisywałem jako


{{ $var }}
{{ foreach $users as $user }}


Podobnie miałem z kilkoma innymi systemami szablonów - te delikatne niuanse w zapisie podstawowych rzeczy (i często brak możliwości pracy na obiektach, tylko tablice...)

Aż się wkurzyłem i napisałem sobie sam prosty (wręcz prostacki) system szablonów.
I nie robię z nikogo programisty - bo system obsługuje tylko if, else, foreach, switch i include + modyfikatory zmiennych :D

konto usunięte

Temat: Nowy system szablonów Twig

Nie zgodzę się że szablony są BE. Szablony są bardzo dobre jeżeli:
1. Mamy taki którego składnia jest prosta i czysta a nie taki który wymaga ode mnie umiejętności programowania.
2. Są proste i przejrzyste. Dlatego narzekam na smarty. Niby miał oddzielać php od html ale ja za nic nie mogę się doszukać różnic na korzyść smarty patrząc na:


foreach($users as $k => $v) {
echo 'Jestem '.$v['imie'];
}

a

{foreach from=$users key=key item=item}
Jestem {$item.imie}
{/foreach}


Mało tego, zapis Smarty jest mało intuicyjny i niewygodny w zapisie. Już wolę to zrobić w czystym PHP wsadzonym w HTML. Tyle dobrego że taki Netbeans ma np wtyczkę do smarty która podświetla na żółto elementy szablonu smarty. Za to to samo za pomocą blitz:


{{ BEGIN users }}
Jestem {{ $imie }}
{{ END }}


wydaje mi się o wiele sensowniejsze. Chce dać dzieci usera ? Proste:


{{ BEGIN users }}
Jestem {{ $imie }}

Moje dzieci: {{ BEGIN dzieci }} {{ $imie }}, {{ END }}
{{ END }}


Co może mi wypisać:

Jestem Darek,
Moje dzieci to: Zenek, Henek, Kunegunda,

Gdzie w smarty miał bym takiego potwora:

{foreach from=$users key=key item=item}
Jestem {$item.imie}
Moje dzieci:
{foreach from=$item.dzieci key=key2 item=item2}
{$item2.imie}
{/foreach}
{/foreach}

konto usunięte

Temat: Nowy system szablonów Twig

To napisz sobie system szablonów który obsługuje

{foreach $a.b.c as $k => $v}
$v.imie
{/foreach}


Swoją drogą - jak blitz rozwiązuje powyższą sytuację (konkretnie o foreach z $a.b.c)

PS. Dobra prezentacja nie jest zła :D Skoro nie używasz kluczy to po co je definiujesz? :DMichał Wachowski edytował(a) ten post dnia 17.05.11 o godzinie 11:19
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Nowy system szablonów Twig

Piotr Lewandowski:
Łukasz C.:
siablony sa be :P

ano są.. a jednocześnie są bardzo często używane :D
bo ogromna wiekszosc stron w internecie ma ogladalnosc taka co kot naplakal ;p

dlaczego szablony sa be, jak i reszta php, przyklad z zycia:
- strona firmowa
- na stronie firmowej jest mala pod stronka ktora informuje o tym ze cos sie popsulo w usludze SAAS

jak sie czasem cos zjebie i stronka zaczyna byc potrzebna to:
- srednio 90,000,000 odslon miesiecznie :]
- ~34 requesty na sekunde
- apache jest zbyt wolne aby obsluzyc taki ruch na jednym serwerze
- ladowanie modulow php zajmuje wiecej niz czas dany na jeden request (max 0.029s)
- cachowanie? jakie ku**a cachowanie, tylko narzut dodatkowy :D
- load balancing nie lubi statycznych cache :D
- szablony przewaznie uzywaja statycznego cache i jeszcze potrzeba czasu na ich obsluzenie

wniosek taki, jak ktos ma 1000 odslon strony dziennie to mega wypasione szablony nie przeszkadzaja, chociaz i tak sa kiepawe bo to tylko dodatkowy narzut a pozytek marny,

ale jak strona ma prawdziwy ruch to czasem statyczny html i lekki serwer www to jedyne wyjscie :)

Temat: Nowy system szablonów Twig

Mało tego, zapis Smarty jest mało intuicyjny i niewygodny w zapisie. Już wolę to zrobić w czystym PHP wsadzonym w HTML. Tyle dobrego że taki Netbeans ma np wtyczkę do smarty która podświetla na żółto elementy szablonu smarty. Za to to samo za pomocą blitz:


{{ BEGIN users }}
Jestem {{ $imie }}
{{ END }}


wydaje mi się o wiele sensowniejsze. Chce dać dzieci usera ? Proste:


{{ BEGIN users }}
Jestem {{ $imie }}

Moje dzieci: {{ BEGIN dzieci }} {{ $imie }}, {{ END }}
{{ END }}


Co może mi wypisać:

Jestem Darek,
Moje dzieci to: Zenek, Henek, Kunegunda,

Gdzie w smarty miał bym takiego potwora:

{foreach from=$users key=key item=item}
Jestem {$item.imie}
Moje dzieci:
{foreach from=$item.dzieci key=key2 item=item2}
{$item2.imie}
{/foreach}
{/foreach}

A to:

<-users>
Jestem %%imie%%
Moje dzieci:
<-#dzieci>%%imie%%,<-/>
<-/>


strawne? ;)

ew. wersja bez nadmiarowego przecinka na końcu i uwzględniająca bezdzietnych:

<-users>
Jestem %%imie%%
<-=dzieci>
a moje dzieci:
<-#dzieci><-_>, <-/>%%imie%%<-/#dzieci>.
<-/=dzieci>
<-~dzieci>i nie mam dzieci o których bym wiedział.<-/~dzieci>
<-/>
Mirosław Ratman

Mirosław Ratman Manager IT,
Architekt systemów
@Avast, Founder
@aSyncro ...

Temat: Nowy system szablonów Twig

Łukasz C.:
dlaczego szablony sa be, jak i reszta php, przyklad z zycia:

To mocno zalezy od tego jakie funkcje ma strona, jak skonstruowana jest komunikacja, itp. PHPem z jakimś systemem szablonów mozna łatwo wygenerować statyczny template a potem przerzucić funkcjonalnosć do javascriptu a wszystkie zapytania ajaxowe załatwiać juz jakims innym jezykiem (Java, itp)

Dzieki temu zachowujesz prostotę budowy/modyfikacji szablonów generowanych przez PHP (z uzyciem np hip-hop jak facebook) i wydajnosc ajax/java czy jakies tam inne ustrojstwo.

Ja osobiscie lubie PhpTalMirosław R. edytował(a) ten post dnia 17.05.11 o godzinie 11:34

konto usunięte

Temat: Nowy system szablonów Twig

Janusz Radkiewicz:

strawne? ;)

ew. wersja bez nadmiarowego przecinka na końcu i uwzględniająca bezdzietnych:

<-users>
Jestem %%imie%%
<-=dzieci>
a moje dzieci:
<-#dzieci><-_>, <-/>%%imie%%<-/#dzieci>.
<-/=dzieci>
<-~dzieci>i nie mam dzieci o których bym wiedział.<-/~dzieci>
<-/>

Musiał bym więcej popisać w tym co pokazałęś ale nie wydaje mi się strawne. Czemu ? Mając dokument HTML ciężko by mi było wzrokowo wyłowić fragment szablonu w kodzie HTML. W wypadku Blitz (a nawet smarty) nie mam z tym problemów. Oczywiście głowy nie odda,m trzeba by popisać i się przekonać.
Michał Wachowski:
To napisz sobie system szablonów który obsługuje

{foreach $a.b.c as $k => $v}
$v.imie
{/foreach}


Swoją drogą - jak blitz rozwiązuje powyższą sytuację (konkretnie o foreach z $a.b.c)

PS. Dobra prezentacja nie jest zła :D Skoro nie używasz kluczy to po co je definiujesz? :D

Fakt, rozpędziłem się z tymi kluczami. Ale nie zmienia to faktu że zapis nadal jest iście PHPowy. Blitz wymaga od Ciebie zachowania logiki w szablonie. Więc w momencie gdy masz zagnieżdżony A->B->C to do szablonu albo przekazujesz samo C albo robisz zagnieżdżone bloki w liczbie 3.
Blitz nie jest szablonem idealny, uniwersalnym do wszystkiego. Jeżeli przekazujesz do szablonu tablicę z A->B->C bez wyraźnej potrzeby na A i B to po co to robić ? Sens to ma w takim wypadku dla przykładu:


{{ BEGIN wpis }}
{{ $tytul }}
{{ $tekst }}
{{ BEGIN komentarze }}
{{ $komentarz }}
{{ BEGIN rangi }}
{{ $ranga }}
{{ END }}
{{ END }}
{{ END }}


Co może Ci np wyprodukować


MOJA NOTKA
------------------------
Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam Lorem ipsum costam costam

~ @darek: Wiesz, całkiem niezły ten wpis
( uzytkownik, super-sprzedawca )
~ @marek: nie zgodzę się, kiepski
(moderator, redaktor)


I teraz jeżeli masz tablicę wpisów z tytułem i tekstem w której jest tablica komentarzy gdzie przy komentarzu są np rangi autora (nie pytaj o sens tego, to przykład) to taka konstrukcja Ci to ładnie wypisze. Wszystkie wpisy na blogu z komentarzami pod spodem i rangami przy komentarzu. Chodzi o array w stylu:


array(
array(
tytul => moja notka
tekst => lorem ipsum
komentarze => array(
array(
komentarz => wiesz, calkiem niezly wpis...
rangi => array( uzytkownik, super-sprzedawca
)
array(
komentarz => wiesz, calkiem niezly wpis...
rangi => array( uzytkownik, super-sprzedawca
)
)
)
array(
tytul => moja notka 2
tekst => lorem ipsum 2
komentarze => array(
array(
komentarz => hehe..
rangi => array( uzytkownik, super-sprzedawca
)
)
)
)


Oczywiście nikt nie każe Ci samemu składać takiej tablicy. Można spokojnie uzupełniać szablon fragmentami, parsując pojedynczo odpowiednie bloki. Ale jeżeli chcemy, wrzucamy całą tablicę i działa.
W drugą stronę tak samo. Możemy zrzucić strukturę szablonu i dostaniemy taką tablicę, tylko bez wartości.Dariusz Półtorak edytował(a) ten post dnia 17.05.11 o godzinie 12:24

konto usunięte

Temat: Nowy system szablonów Twig

Łukasz C.:
Piotr Lewandowski:
Łukasz C.:
siablony sa be :P

ano są.. a jednocześnie są bardzo często używane :D
bo ogromna wiekszosc stron w internecie ma ogladalnosc taka co kot naplakal ;p

dlaczego szablony sa be, jak i reszta php, przyklad z zycia:
- strona firmowa
- na stronie firmowej jest mala pod stronka ktora informuje o tym ze cos sie popsulo w usludze SAAS

jak sie czasem cos zjebie i stronka zaczyna byc potrzebna to:
- srednio 90,000,000 odslon miesiecznie :]
- ~34 requesty na sekunde
- apache jest zbyt wolne aby obsluzyc taki ruch na jednym serwerze
- ladowanie modulow php zajmuje wiecej niz czas dany na jeden request (max 0.029s)
- cachowanie? jakie ku**a cachowanie, tylko narzut dodatkowy :D
- load balancing nie lubi statycznych cache :D
- szablony przewaznie uzywaja statycznego cache i jeszcze potrzeba czasu na ich obsluzenie

wniosek taki, jak ktos ma 1000 odslon strony dziennie to mega wypasione szablony nie przeszkadzaja, chociaz i tak sa kiepawe bo to tylko dodatkowy narzut a pozytek marny,

ale jak strona ma prawdziwy ruch to czasem statyczny html i lekki serwer www to jedyne wyjscie :)

No teraz popatrz. Bierzesz APC + nginx i szablony w Blitz. Dlaczego ?
~ Blitz nie potrzebuje cachowania. Jest napisanym w C rozszerzeniem do PHP i jest bardzo szybki.
~ Nie potrzeba żadnego katalogu na wersje kompilowane bo on tego po prostu nie robi
~ Nie wymaga od webmastera bóg wie jakich zdolności programistycznych
~ Mimo prostej składni i małego skomplikowania na oko, system bloków i kontekstów daje niesamowite możliwości.

Wiadomo że czysty PHP wymieszany z HTML będzie szybszy ale równie dobrze można powiedzieć że lepiej stronę przygotować w C zamiast w PHP...
Tomasz Zadora

Tomasz Zadora programuję

Temat: Nowy system szablonów Twig

Najlepszy system szablonów to PHP samo w sobie, reszta to dorabianie piątego koła.

Temat: Nowy system szablonów Twig

Tomasz Zadora:
Najlepszy system szablonów to PHP samo w sobie, reszta to dorabianie piątego koła.

Pójdźmy dalej, "najlepszy framework, to PHP samo w sobie, reszta..." itp.

Myślałem podobnie, aż trafiłem do firmy, gdzie była duża rotacja webmasterów i programistów. Szablony pozwoliły ogarnąć zamieszanie.
Nadto, studzą zapędy ambitniejszych webmasterów na polu popisywania się znajomością "fajnych sztuczek w PHP".

Chcesz zbierać logikę w jednym miejscu, po czym wołać osobną (osobną, by zasadniczej logiki nie obciążać tym, co ma być przed, co po, a co pod czymś innym) mieszaninę html/php, żeby przygotowane dane wypluć, Twoja sprawa.

Pytałem Cię o realizację list dowolnie zagnieżdżonych Twoją metodą. Mnie np. upychanie fragmentów HTML po funkcjach niespecjalnie rajcuje.

Temat: Nowy system szablonów Twig

Dariusz Półtorak:
Janusz Radkiewicz:

strawne? ;)

ew. wersja bez nadmiarowego przecinka na końcu i uwzględniająca bezdzietnych:

<-users>
Jestem %%imie%%
<-=dzieci>
a moje dzieci:
<-#dzieci><-_>, <-/>%%imie%%<-/#dzieci>.
<-/=dzieci>
<-~dzieci>i nie mam dzieci o których bym wiedział.<-/~dzieci>
<-/>

Musiał bym więcej popisać w tym co pokazałęś ale nie wydaje mi się strawne. Czemu ? Mając dokument HTML ciężko by mi było wzrokowo wyłowić fragment szablonu w kodzie HTML.

Kwestia przywyczajenia, może trochę edytora. Ale można pluginem zmienić składnie i pisać np. coś w stylu:


{obj users}
Jestem %%imie%%
{if dzieci}
a moje dzieci:
{each dzieci} %%imie%% {end each dzieci}.
{end if dzieci}
{ifnot dzieci}i nie mam dzieci{end ifnot dzieci}
{end obj users}

opcjonalnie stosując samo {end}.

Ja tam osobiście lubię pierwszą konwencję, wzrok mi się sam na właściwych tagach zaczepia a symbole wydają oczywiste - ale ja to po prostu znam.
W wypadku Blitz (a nawet smarty) nie mam z tym problemów. Oczywiście głowy nie odda,m trzeba by popisać i się przekonać.

Oczywiście, zapraszam na priv, pokażę, wytłumaczę, wysłucham marudzeń ;)
Tomasz Zadora

Tomasz Zadora programuję

Temat: Nowy system szablonów Twig

Chodzi Ci np. o rekurencyjne pokazywanie drzewa kategorii o dowolnym zagłębieniu ?

Od tego są obiekty i właściwości.

Jeżeli masz w zmiennej $tree instancję klasy która realizuje rekurencję, a $treeHTML to "mini szablon" to np.:


<?php
$treeHTML->levelStart = '<ul class="treeLevel">';
$treeHTML->levelEnd = '</ul>';
$treeHTML->nodeStart = '<li class="treeNodeName">';
$treeHTML->nodeEnd = '</li>';
$tree->setHTMLTemplate($treeHTML);
?>

...inne mięso html...
<div class="treeContainer">
<?php echo $tree->display(); ?>
</div>
...inne mięso html...


Można sobie wyobrazić prostą modyfikację do innego przedstawiania poszczególnych poziomów drzewa.

PS. Od studzenia zapędów to jest kierownik.Tomasz Zadora edytował(a) ten post dnia 17.05.11 o godzinie 14:37

Temat: Nowy system szablonów Twig

Tomasz Zadora:
Chodzi Ci np. o rekurencyjne pokazywanie drzewa kategorii o dowolnym zagłębieniu ?

Od tego są obiekty i właściwości.

No patrz, a ja pechowo otrzymałem dane (nie ważne, czy z bazy, czy z jakiegoś XML) np. w postaci tablicy asocjacyjnej.
Jeżeli masz w zmiennej $tree instancję klasy która realizuje rekurencję, a $treeHTML to "mini szablon" to np.:


<?php[/quote]> $treeHTML->levelStart = '<ul class="treeLevel">';[quote]$treeHTML->levelEnd = '</ul>';
$treeHTML->nodeStart = '<li class="treeNodeName">';
$treeHTML->nodeEnd = '</li>';
$tree->setHTMLTemplate($treeHTML);
?>

...inne mięso html...
<div class="treeContainer">
<?php echo $tree->display(); ?>
</div>
...inne mięso html...

No to ja już ten HTML widzę w więcej niż jednym miejscu, a tu mi właśnie ktoś wskakuje z pomysłem, że <ul> jest be, że rozważają właśnie
blockquote, albo siakieś zagnieżdżone divy, niewykluczone, że może nawet tabelki.
Mnie to rybka, niech sobie zmieni webmaster w szablonie, w _jednym_, oczywistym miejscu i tyle.
Można sobie wyobrazić prostą modyfikację do innego przedstawiania poszczególnych poziomów drzewa.

O tak, prostą. Przed chwilą zaprzęgnąłeś do szablonowania obiektowość i rozproszyłeś wygląd jednego, prostego elementu ;)
PS. Od studzenia zapędów to jest kierownik.

Jednakowoż skuteczniejsze i wygodniejsze jest ograniczenie możliwości, niż permamentna kontrola.
Tomasz Zadora

Tomasz Zadora programuję

Temat: Nowy system szablonów Twig

To, czy jest ul czy co innego to należy już do webmastera, on sobie to zmienia tak jak chce, cały kod który wpisałem znajduje się w jednym pliku.
No patrz, a ja pechowo otrzymałem dane (nie ważne, czy z bazy,
czy z jakiegoś > XML) np. w postaci tablicy asocjacyjnej.

To w jaki sposób dane są dostarczone do obiektu $tree jest całkowicie abstrakcyjne i transparentne dla prezentacji, nie rozumiem co chciałeś osiągnąć pisząc to co wyżej ???Tomasz Zadora edytował(a) ten post dnia 17.05.11 o godzinie 15:08

Temat: Nowy system szablonów Twig

Tomasz Zadora:
To, czy jest ul czy co innego to należy już do webmastera, on sobie to zmienia tak jak chce, cały kod który wpisałem znajduje się w jednym pliku.

Aczkolwiek w wielu jego miejscach.
Co nie jest ani wygodne, ani eleganckie, za to prosi się o przeoczenia.
No patrz, a ja pechowo otrzymałem dane (nie ważne, czy z bazy,
czy z jakiegoś > XML) np. w postaci tablicy asocjacyjnej.

To w jaki sposób dane są dostarczone do obiektu $tree jest całkowicie abstrakcyjne i transparentne dla prezentacji, nie rozumiem co chciałeś osiągnąć pisząc to co wyżej ???

Nie to co Ty, nadmiernie ekspresyjną interpunkcją ;D
Zwróciłem jedynie uwagę, że ja nie muszę dobudowywać klas do już gotowej struktury (tablicy asocjacyjnej postaci drzewa).

Webmaster definiuje wygląd pojedynczego elementu, markuje w tymże miejsce, gdzie się opcjonalny "fraktal" wszczepi, jak ma kaprys/potrzebę, dokłada opcjonalne prefiksy/postfiksy otaczające potomka wszczepianego (choć zwykle nie musi, ale możliwością dysponuje).

Potrafię zrozumieć osoby, które cechuje niechęć do uczenia się kolejnej wartwsy, ale nie rozumiem ich genaralizującego przekonania, że ich sposób jest dla wszystkich najlepszy.
Zwlaszcza, gdy składnia szablonów jest mniej skomplikowana niż podstawy PHP a dostarczony przez programistę zgrzebny prototyp może być dowolnie przez webmastera przerobiony, wywrócony do ghóry nogami i nadal działać bez jakiejkolwiek ingerencji kodera.

Następna dyskusja:

Document Management System




Wyślij zaproszenie do