-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PHP templating system changes - discussion #2356
Comments
Wrzucam historię wątku: from: #2354 |
Ale jak pisałem templaty do JS to zupełnie inna bajka niż do PHP ponieważ:
Jest jak najbardziej za templatami w JS i przeciw templatom w PHP (po stronie serwera).
No pewnie - cachowanie w rozumieniu smarty to cachowanie widoków - zamiast generować widok mamy już od razu w cacheu gotowy HTML całej strony - ja to kumam - tylko to nie jest wcale takie piękne gdy mamy bardzo dynamiczny serwis i chcemy żeby wyświetlane informacje były zgodne z aktualną rzeczywistością - zapewnienie że to co wyciągamy z cache'a odzwierciedla rzeczywistość to niebanalna sprawa i w praktyce chyba kiepsko się to sprawdza - zwłaszcza gdy widoki są b. często indywidualne - tj. każdy użytkownik może widzieć coś nieco innego na stronie
No pewnie, jest frankensteinem, zlepkiem ulepionym przez lata zmieniających się podejść itd., ale to nie problem systemu templatów ale zasad i ich przestrzegania - to, że zaczniemy używać smarty nie spowoduje, że system się naprawi - zasady - ich zdefiniowanie i przestrzeganie to osobny temat
no pewnie - generalnie się zgadzam, ale są tematy tak proste, że nie warto kombinować i można też zrobić samemu, coś co jest proste i idealnie dopasowanie do potrzeb zamiast używać "gotowych" rozwiązań, które przy okazji komplikują życie bo wprowadzają masę dodatkowych zależności - tak by było moim zdaniem np. wprowadzając smarty czy cos podobnego
Och wiem, OC w ogóle umiera od lat. Niemniej wydaje mi się, że to nie tak jak napisałeś. "Kod od zera" to pułapka - o ile nie masz budżetu i nie jest to podejście gdzie ktoś siedzi nad tym przez określony czas i to jego główne zadanie - to się nie uda - zaczniesz i nie skończysz - to moim zdaniem najbardziej prawdopodobny scenariusz. Obecnie serwis obrósł na tyle dużą funkcjonalnością, że ogarnięcie tego "od nowa" to moim zdaniem zabawa naprawdę na rok? pracy na etacie i to nie wiem czy byś skończył przepisywać to wszystko. Ja dlatego od kilku lat powoli dłubałem przepisywanie tego kawałek po kawałku, ostatnio jakoś straciłem rozpęd, bo zbytnio wciągnęły mnie sprawy zawodowe, ale mam nadzieję, to nie koniec mojej przygody z tym kodem. |
Dorzucę swoje trzy grosze. Generalnie zgadzam się z @kojoty co do wydajności szablonów w PHP, że jest to niepotrzebny narzut, trudno cacheowalny itp. Tak jest w obecnej sytuacji, gdy mnóstwo logiki związanej z indywidualizacją jest zawarta właśnie w generowaniu widoków HTML. W tym ujęciu robienie cache dla przetworzonych szablonów w najgorszym przypadku może zakończyć się liczbą "instancji" danego widoku zbliżoną do (liczba użytkowników * liczba aktywnych języków). Natomiast ja od pewnego czasu staram się przenosić maksimum logiki do API + js. Wg mnie optymalnie HTML powinien stanowić tylko wspólny dla wszystkich, statyczny punkt startowy do działań dynamicznych. Przy tym podejściu w ewentualnym szablonie znalazłyby się tylko tłumaczenia, co daje maksimum tyle instancji danego widoku, ile jest aktywnych języków. Z cacheowaniem tego pewnie nawet stary, dobry mustache sobie poradzi. Właśnie z tłumaczeniami jest największy kłopot, tzn. czy mają być statyczne i dynamiczne, czy np. tylko dynamiczne, jeżeli tak to jak je przekazywać do js itd.? Obecnie mamy ponad 3100 etykiet do tłumaczeń w tablicy. Czy to dużo, czy mało w obecnych czasach - nie wiem. |
Please let's continue the discussion in english. IMO if there are changes to be made to the template system used by the site, it should be well documented for all developers. Github Wiki I think fits the purpose well. I am sure there are pros and cons for several schools of thought. Without getting into technical details, the template system should be simple, easy to use, easy to insert placeholder via translations, <? ... or should I say independent in syntax and usage from PHP code, all placeholders to be set up in PHP code to be taken by the template subsystem and be replaced properly. Also, uniform across the entire site. |
To nie tak działa. |
Sprawdziłem i rzeczywiście tak jest. Akurat cache'owanie gotowych widoków nie uważam za totalną głupotę, gdy jest to kontrolowane, tzn. jest pewność, że po pierwszym użyciu mamy do czynienia wyłącznie ze statycznym kodem. Tak czy inaczej, jeżeli to wygląda w ten sposób, to przy braku zaawansowanej logiki w widoku (a do tego chyba dążymy), nie widzę różnicy w efektywności między szablonem a przeplatanką PHP i HTML w kodzie źródłowym, natomiast czytelność szablonu moim zdaniem wygrywa. |
no nie - zaraz... czytelność szablonu zdecydowanie przegrywa bo to tylko komplikuje sytuację - o ile nie robimy głupich rzeczy w widoku to czytelność html + php jest większa niż czytelność html+jakies-tam-spec-template-składnie - w szczególności gdy przecież każdy kto u nas tworzy widoki zna php i jest programistą - to po raz po dwa: ostatecznie: za to istotne jest moim zdaniem: definiowanie i trzymanie się zasad tego czym ma być widok jaki tworzymy - tj. minimalizowanie kodu php do warstwy prezentacji Jak już mówiłem, ale jeszcze podkreślę: systemy templatów do JS są OK i to jest osobna historia i tak jeszcze na koniec:
No nie taka totalna, akurat cachowanie już gotowych widoków było conajmniej kiedyś względnie popularne - patrz serwery proxy-cache |
I tutaj się różnimy. Znam widoki jedne i drugie, te z "klamrami", jeżeli nie zawierają logiki, czyta mi się łatwiej niż wstawki php. |
@rapotek
naprawdę nie ułatwiają tylko utrudniają - po za php trzeba się zapoznać jeszcze z dodatkową skłądnią niemniej zgadzam się to jest trochę flame-war :) i nie musimy się ostatecznie zgadzać |
Smarty generalnie to przestarzała kobyła. |
W przypadku popularnych silników szablonów zazwyczaj istnieje jakaś forma integracji Xdebugera i IDE co pozwala na stawianie breakpointów w plikach szablonów. Nie dorzucę do tej dyskusji nic od siebie, ale mam pytanie. Jak najwydajniej używać tego co już jest w kodzie OC? W związku z tym, że nie znam kodu OC i dopiero go poznaje naturalne jest, że z przeglądarki najpierw odnajduję interesujący minę fragment w plikach szablonów Edit:
Dzięki temu w katalogu obok tworzą mi się pliki PHP, które mogę normalnie debugować, ale może jest jakieś lepsze rozwiązanie. |
Przyznam, że nigdy nie używałem debuggera do kodu PHP, tym bardziej breakpointów. Przy analizie przyczyn błędów bazuję na czytaniu kodu i, ewentualnie, tymczasowym logowaniu w newralgicznych miejscach. |
Ja trochę nie mogę sobie wyobrazić nieużywania step debuggera, ale może to kwestia przyzwyczajenia. Ze step debuggerem wstawiam jednego breakpointa. (Niżej wrzucę screen przedstawiający możliwości.) Mogę też kliknąć, aby automatycznie wszedł do wnętrza metody, którą wykonuje i tam stawiać breakpointy i sprawdzać zmienne lokalne już w tej metodzie. Tu właśnie przykład użycia. Tak jak pisałem wcześniej znalazłem małe ułatwienie dla mnie. Zamiast robić eval() na stringu zapisuję stringa do pliku php w katalogu ViewsDebug, który następnie includuje. W takim wygenerowanym pliku już mogę normalnie stawiać breakpointy. @rapotek Czyli |
Wszystkie, które nie mają instrukcji warunkowych, pętli itp. Tylko czyste wstawianie wartości. PS: Z ciekawości ustawiłem sobie XDebuggera pod VSCode. Nie było to proste w mojej konfiguracji (edycja kodu na innym hoście niż jego uruchamianie), ale wreszcie się udało. Może się przydać, dzięki :) |
This is an issue for discussion about possible changes and development paths in existing PHP templating system.
The text was updated successfully, but these errors were encountered: