![]() |
![]() |
![]()
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) |
|
|
![]() |
![]()
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. 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 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. 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. 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:
Ale teraz czy w opt mogę sobie zrobić cos analogicznego do tego? 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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 08:38 |