Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jaki system szablonów?
koraso
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 16.02.2009

Ostrzeżenie: (0%)
-----


Zaczynam po woli myśleć o mojej pracy dyplomowej. Będę pisał CMS taki ogólno-tematyczny al'a PHP-Fusion. Na razie jestem na etapie planowania.
I zastanawiam się jakiego systemu szablonów użyć. Chciałbym coś lekkiego, ale jednocześnie żeby obsługiwało instrukcje warunkowe i pętle.
-Smarty jak każdy wie jest bardzo ociężałe tak więc raczej odpada.
-Open Power Templates lepiej, ale też jest tak mocno rozbudowane, że nie wykorzystam większości jego dobrodzejstw, wiec też raczej odpada.
-bTemplate - całkiem przyjemnie prezentuje się, ale ten projekt nie jest już rozwijany od 2003roku więc pewnie troszkę przestarzały kod. Ciekaw jestem jak z wydajnością?
-FreeTemplate - Przestarzałe...
Czekam na Wasze opinie i wskazówki (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak sprawdzałem doświadczalnie. Tak jak pisałem długo pracowałem na OPT (mój system na nim powstał) i wszystko było ok dopóki nie zauważyłem, że pisanie kodu w czystym phpie nie robi mi prawie żadnej różnicy. Trzeba przyznać ze korzystanie z opt i podobnych na pewno jest łatwiejsze dla człowieka i to jest fakt, aczkolwiek dla mnie przynosiły więcej problemów niż prawdziwego pożytku.

Wspomnę może tutaj parę grzechów opt1 - wiem, że może zabrzmi to niekompetentnie, ponieważ z opt2 nie korzystałem:
Wyłączenie raportowania E_NOTICE
E_NOTICE pomimo swojej nazwy są bardzo użyteczne w procesie debugowania problemu dlatego też cały czas miałem je włączone i jedynie je wyłapywałem, wyświetlając wtedy kiedy tego potrzebowałem a resztę zapisywałem do logów. Opt nie sprawdzał czy klucz w tablicy istnieje (co jest szybsze niż wyłączenie raportowania) i zasypywał mi logi śmieciami typu undefined index.

Brak wsparcia dla łączenia zmiennych znakiem "."
Nie przechodziło coś takiego
Kod
{nazwa_funkcji($test.$test2)}


Konieczność tworzenia listy używanych funkcji
Brak możliwości korzystania z dowolnej funkcji phpowej w szablonie. Przy dużym projekcie może powstać potężna tablica samych aliasów funkcji i dostępu do nich. To jest dopiero nienaturalne (IMG:style_emoticons/default/smile.gif)

Narazie pamiętam tylko te 3.

Cytat(Zyx @ 24.04.2010, 09:22:08 ) *
1. Człowiek musi jakoś dbać o czytelność kodu, automat nie musi, więc może stosować wydajniejsze konstrukcje.

Człowiek nadal musi dbać o czytelność tplków
Cytat(Zyx @ 24.04.2010, 09:22:08 ) *
2. W czystym PHP trzeba wszystko obliczać w czasie wykonywania, kompilator może część rzeczy obliczyć na etapie kompilacji i zaoferować to samo, generując dużo prostszy kod.

Muszę się zgodzić ale warto byś tu przytoczył choć parę rzeczy w których kompilator NAPRAWDĘ pomaga i odciąża PHP.

Cytat(Zyx @ 24.04.2010, 09:22:08 ) *
3. Kod wielu rozwiązań bazujących na helperach (które przy okazji trzeba przygotowywać w nienaturalny zupełnie sposób, klepiąc kod PHP, zamiast pracować z normalnym HTML-em) jest naprawdę złożonych i wymagających obliczeniowo: rendering formularzy, rendering drzewek w Zend Framework... taki placeholderLoop żeby mieć współdzieloną treść pętli, za każdą iteracją tworzy i inicjuje nowy, ogromny obiekt widoku i robi include... jak pętla ma 100 elementów, można sobie odpowiedzieć, co się dzieje. W OPT przy analogicznej funkcjonalności otrzymujemy prostą pętlę i tyle.

Jeżeli chcesz mieć naprawdę łatwe w użyciu narzędzie (dość uniwersalne) do wyświetlanie bardziej zaawansowanych struktur to w opt tworzysz plugin czyli bądź co bądź również "trzeba przygotowywać w nienaturalny zupełnie sposób, klepiąc kod PHP". Chociażby przykład struktury drzewa.

Cytat(Zyx @ 24.04.2010, 09:22:08 ) *
Apel: jak ktoś mówi o czytelności, to niech pokaże przykład i opisze go krótko, co się tam dzieje i dlaczego według niego jest on czytelny. Inaczej to się można przerzucać jak dzieci w piaskownicy "mój jest czytelniejszy - gupi jesteś, mój jest!" A ja w takiej pseudodyskusji udziału nie mam ochoty brać i puste słowa będę zwyczajnie olewać.

Bardziej pracowałem na pierwszej wersji opt gdzie jeszcze używałem składni {...} gdzie ich stosowanie (przy małej modyfikacji IDE) było czytelniejsze niż tagi
Kod
<opt:section="tags">
które dla mnie strasznie zlewają się z html-em co już bardziej skłania mnie w stronę XSLT niż do stosowanie takiego systemu szablonu (nie pamiętam czy jest jeszcze możliwość korzystania z {} w opt2). Oczywiście nie twierdzę, że opt jest nie czytelne bo bym skłamał ale dla mnie to tylko jedyna zaleta korzystania z wszelkich "template engines".

Co do czytelności to już są bardziej subiektywne odczucia i nie warto się tu kłócić nad tym "czy znak { jest bardziej czytelny niż :" itd bo to nie ma sensu - kwestia gustu. Ale proszę przykład - wiadomo, że opt wygrywa
OPT:
Kod
<p class="tags">
    <opt:section="tags">
        <a parse:href="$tag.url">{$tag.name}</a>
    </opt:section>
</p>


PHP:
  1. <p class="tags">
  2. <? foreach($tags as $tag):?>
  3. <a href="<?=$this->url($tag['url'])?>"><?=$tag['name']?></a>
  4. <? endforeach; ?>
  5. </p>


Ale teraz czy w opt mogę sobie zrobić cos analogicznego do tego?
  1. <a href="<? foreach($tag['relates'] as $tr) if(strpos($tr, 'test') !== false) echo $tr; endforeach; ?>">

Chyba trzeba by było zrobić to przed tym linkiem i o ile dobrze pamiętam dodać strpos (abstrahujmy od tego czy to strpos czy inne funkcje) do listy funkcji co jest dla mnie ogromnym utrapieniem.

No i z tego jest jeden morał. Korzystasz z szablonów w php to nie tworzysz sobie żadnych ograniczeń, które każdy inny system szablonów będzie posiadać.

P.s. Bardzo proszę pamiętać, że opisuję tutaj swoje subiektywne odczucia i w żaden sposób nie traktujcie tego jak atak na OPT czy inne. Po prostu czysty php daje mi wolność za niewielką cenę. A skoro nie widać różnicy to po co przepłacać (IMG:style_emoticons/default/smile.gif)

Ten post edytował wookieb 24.04.2010, 17:56:54
Go to the top of the page
+Quote Post

Posty w temacie
- koraso   Jaki system szablonów?   10.02.2010, 22:43:37
- - wookieb   Żadnego. Coraz więcej ludzi przechodzi na szablonu...   10.02.2010, 22:55:20
- - destroyerr   Jeśli chodzi o OPT to co z tego, że nie wykorzysta...   10.02.2010, 22:58:59
- - koraso   Cytat(wookieb @ 10.02.2010, 22:55:20 ...   10.02.2010, 23:12:41
|- - windman   Cytat(koraso @ 10.02.2010, 23:12:41 )...   11.03.2010, 15:43:15
- - bolverk   Ja ze swojej strony szczerze polecam Savant 3. J...   10.02.2010, 23:27:09
- - Zyx   koraso -> i co z tego, że kobyła, kiedy wydajno...   11.02.2010, 08:15:34
|- - fly474   Cytat(Zyx @ 11.02.2010, 08:15:34 ) ko...   11.03.2010, 08:43:29
- - Rudi1204   pozwolę sobie podpiąć się pod temat i też się Was ...   11.03.2010, 08:34:07
- - gothye   Jako zwolennik smarty wypowiem się .... Z Smarty b...   11.03.2010, 15:51:48
- - mhs   Zapytam może o coś innego. Dużo dobrego słyszałem ...   11.03.2010, 17:08:06
- - Pilsener   Nie, nie można "przemigrować" bo wymaga ...   12.03.2010, 11:41:07
- - nowy_pehapowiec   Moim zdaniem lepiej sobie dać spokój z templatami....   23.04.2010, 19:02:50
- - Zyx   nowy_pehapowiec -> widziałeś kiedyś jakiś poważ...   23.04.2010, 20:50:52
- - wookieb   @zyx Dude wiem, że jesteś współautorem OPT, któreg...   23.04.2010, 21:29:44
- - nowy_pehapowiec   Nie czytelny? O czym my mówimy? Żeby wypisac słowa...   23.04.2010, 22:00:39
- - Zyx   wookieb -> a sprawdzałeś to doświadczalnie? Bo ...   24.04.2010, 08:22:08
- - wookieb   Tak sprawdzałem doświadczalnie. Tak jak pisałem dł...   24.04.2010, 17:47:47
- - Zyx   O panie, OPT 1.x, a OPT 2.x to dwie zupełnie różne...   25.04.2010, 08:26:26


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 08:38