Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Smarty czy phpbb3?
Forum PHP.pl > Forum > Przedszkole
lukasamd
Witam,
nazwa tematu niewiele może mówić, więc już opisuję sprawę.

Mam serwis, który kiedyś był zakładany na php-fusion. Obecnie z oryginalnego silnika nic nie zostało - wprowadziłem masę zmian, niektóre mechanizmy w ogóle przebudowałem, jeszcze inne wyrzuciłem.
Obok serwisu jest forum działające na phpBB3, użytkownicy zakładają konta tylko na forum.

Ostatnio pomyślałem o pewnej integracji np. komentowanie na stronie bez podawania nicka, jeżeli jest się zalogowanym na forum. Nie było z tym problemów i działa odpowiednio.
Zastanawiałem się od dłuższego czasu nad wdrożeniem w serwisie smarty, w szczególności ze względu na bardzo efektywny cache na plikach, w którym można wszystko bardzo wybiórczo ustawiać.

Po integracji sesji z phpbb3, mam dostęp z poziomu serwisu do większości elementów phpbb3. Przykładowo, serwis miał swoje funkcje od obsługi bazy (proceduralne), zaś obecnie dostępny jest obiekt $db z nieco większymi możliwościami i korzystający z mysqli. To samo tyczy się wbudowanego w skrypt cache oraz systemu templatek.

No i tu moje pytanie do bardziej doświadczonych, bo sam nie wiem już co będzie lepsze: czy w wypadku serwisu dokładać jeszcze smarty i w nim realizować pełne cachowanie np. artykułów, czy może jednak użyć phpbb3 i połączenia typu:

serializowane dane dla templatek (cache na plikach z phpbb3) + skompilowane templatki

Oczywiście chyba dobrym rozwiązaniem byłoby wywalenie nadmiarowych elementów takich jak ta proceduralna obsługa bazy - ogrom użytecznych funkcji i tak jest pod ręką, więc chyba warto skorzystać...

Alternatywnym rozwiązaniem jest ograniczenie integracji sesji do wymaganego minimum, czyli zrobienie kopii common.php i wywalenie wszystkiego, co nie jest niezbędne (o ile coś można wywalić), choć nie jestem pewien, czy jest sens bawić się w 2 systemy templatek. Do wydajności obu rozwiązań nie mam zbytnio uwag - nieco to testowałem i zarówno smarty jak i phpbb3 pozwalają na niezłe odciążenie.
Zyx
Jeśli najważniejszym argumentem przemawiającym za Smarty ma być system cache, to daj sobie spokój z jednym i z drugim. Pewnie, że można wbudowywać wózki tramwajowe w pralki, które przyspieszą ich transport po torach tramwajowych, ale chyba lepiej jest wozić je własnym samochodem, albo w ostateczności normalnym tramwajem; przynajmniej nie będą zawadzać, gdy będziesz już chciał ustawić ją w mieszkaniu. Schodząc do świata programowania, cache to zupełnie inna funkcjonalność, która powinna leżeć w kompetencjach komponentu/biblioteki stworzonej specjalnie do tego celu, która może być co najwyżej podpięta poprzez jakiś port do systemu szablonów (szablonów, a nie jakichś "templatek"!). Inaczej dochodzisz do absurdu, którego chcesz uniknąć, czyli kilku różnych, nadmiarowych API do realizowania tego samego. Chcesz cache'ować treść szablonu - używasz jednego systemu, chcesz cache'ować jakieś wewnętrzne dane, musisz użyć drugiego, mimo iż technicznie jest to dokładnie to samo i powinno być zarządzane tak samo. Sam system cache w Smartym też jest wyjątkowo patologiczny, ponieważ jest on na sztywno wbudowany w klasę główną i nie da rady z nim zrobić niczego więcej ponad to, co zaplanowali twórcy.

Inna sprawa, że skoro już decydujesz się na system szablonów z autorskim językiem, powinieneś szukać takiego, który faktycznie zwiększa produktywność programisty i poprawia jakość kodu w porównaniu do PHP. Małe, prymitywne oraz źle zaprojektowane biblioteki nie są w stanie tego zapewnić i po początkowym zachwycie programiści zacinają się na prostych problemach, których nie da się elegancko rozwiązać, zrażają się, wracają do PHP i rozpowszechniają różne mity o tego typu bibliotekach. System z phpBB3 jest strasznie ubogi, Smarty - źle zaprojektowany (ubogi w sumie też), a demonem szybkości też nie jest, zwłaszcza w wersji 3.
lukasamd
No to właśnie chcę uniknąć wielu API, skoro wszystko co mi potrzebne mam na tacy w phpbb3 (zarówno od cache zapytań, jak i innych dowolnych danych).

Możliwości szablonów z phpbb3 jak i smarty w zupełności wystarczają jak na moje potrzeby.
Ujmę inaczej: jest nawet spory "zapas" w wypadku integrowanego serwisu: nie jest on specjalnie interaktywny, służy głównie do prezentacji treści tworzonej przez redakcję. Sama redakcja pracuje na panelu administracyjnym, który jest od reszty niezależny. Nie są więc potrzebne zaawansowane rozwiązania, zaś moje pytanie rozbija się bardziej o to, czy warto wykorzystać już gotowe elementy z phpbb3, które i tak są dostępne ze względu na częściową integrację, zamiast bawić się w dodawanie zupełnie nowych.
To co było domyślnie w php-fusion nie można nazwać systemem szablonów, nie można powiedzieć aby był wydajny czy choć trochę wygodny: wszystko zawarte jako funkcje typu render_header w jednym tylko pliku, całkowite przemieszanie php i (x)htmla. Zmiana na system szablonów z prawdziwego zdarzenia, choćby nawet ubogi, i tak będzie znacznie ułatwiała jakieś większe zmiany, które nie zdarzają się zbyt często.

A skoro już jesteśmy przy szablonach i zdążyłem rzucić okiem na sygnaturkę, to zapytam o coś jeszcze: czy w innych projektach, tworzonych od podstaw warto postawić na OPT? Co przemawia za nim bardziej niż za smarty? Pytania czysto informacyjne, nie traktuj ich przypadkiem jako "przekomarzania", po prostu nie jestem doświadczony i wolę zapytać fachowca smile.gif

Zyx
Jeśli serwis ma w dużej części bazować na phpBB3 i twierdzisz, że masz tam wszystko w miarę poukładane, wtedy faktycznie najlepiej będzie jeśli skorzystasz z bibliotek oferowanych przez silnik tego forum. Nie wiem niestety, jak one się prezentują pod względem jakości oraz dokumentacji. phpBB2 jeszcze pamiętałem z dawnych czasów, trójki nawet nigdy nie ściągnąłem, aczkolwiek rewelacji na poziomie przyzwoitego frameworka raczej bym się nie spodziewał po niej.

Ad. OPT -> warto. Moje zarzuty dla Smarty'ego:

- Przestarzały.
- API nawet w wersji 3 ma mnóstwo poważnych niedoróbek.
- Autorzy i użytkownicy podniecają się "nowościami", które w wielu innych szablonach dostępne są od lat (np. wyrażenia w stylu "$a+$b").
- Kompletny brak innowacyjności. Język to PHP w klamerkach, w dodatku mocno ograniczony w stosunku do pierwowzoru. Powtarza te same błędy i produkuje nowe. A jeśli język ma się sprowadzać do PHP w klamerkach, to lepiej by go w ogóle nie było i by używać PHP.
- Powolny, zwłaszcza w wersji 3.

Jest co najmniej kilka lepszych sytemów szablonów, a ponieważ pytasz o OPT, projektuję go tak, by nie miał on wad, które wkurzają mnie w innych systemach szablonów. Na pewno jest wydajniejszy i ma dużo lepsze API, natomiast język ma faktycznie być nastawiony na rozwiązywanie praktycznych problemów, gdyż pętle oraz ify to nie wszystko. Ponadto moim marzeniem jest niezależność od szczegółów działania skryptu oraz technicznych szczegółów po stronie szablonów, dlatego OPT dąży do minimalizacji tego (co też przekłada się na czytelność i wygodę). Są tutoriale, są przykłady - najlepiej zobacz sam.

Do lektury polecam:

http://www.zyxist.com/pokaz.php/uzyteczne_systemy_szablonow
http://www.zyxist.com/pokaz.php/smarty_3
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.