php szablony

0

Witam,
Mam problem tego typu, że nie wiem jak zacząć pisanie storny http://www.kess.snug.pl/?sid=10&pid=23 nad samą strukturą? Chodzi mi o te wszytkie katalogi, pliki php i html. Jak zapanować nad tym? Ostatnio robilem to tylko w katalogach, później poczytałem o szablonie w PHP:
http://www.kess.snug.pl/?sid=10&pid=23, ale dalej za bardzo nie wiem, jak zachować ład i porządek? Czy używać OPT lub Smartów? Czy może ktoś mi podpowiedzieć? Wolałbym na początek coś prostego

0

Używaj smartów

0

i tu też mam wątpliwości, ponieważ jak szukałem informacji to najbardziej optymistycznie ludzie na forach wypowiadali się o OPT, a o Smartach mówili, że są znacznie wolniejsze od OPT :] A po drugie ogólnie nie polecali, ani jednego ani drugiego. Pisali, że lepiej używać wzorców projektowych. Dlatego pytam się jak to jest w praktyce? Co jest lepsze, czego łatwiej i szybciej się nauczyć ? etc

0

i jeśli ktoś pisze o wzorcach projektowych to automatycznie chodzi o framework'a (np Zent, Cake, Symfony) czy to jest jeszcze coś innego ?

0

Stwierdzenie "lepiej używać wzorców projektowych, niż Smarty lub innych szablonów" wydaje mi się całkowicie pozbawione sensu. Może to przekręciłeś, może pisali głupoty. Może ja tu czegoś nie rozumiem.

Nie, użycie wzorców projektowych absolutnie nie musi się wiązać z użyciem jakiegokolwiek frameworka (BTW: nie wstawia się na chama apostrofu przy każdej odmianie wyrazu; w tym wypadku apostrof był akurat niepoprawny ;) ).

Poczytaj sobie w necie co to są wzorce projektowe. To po prostu swoiste... schematy "kodu". "Kodu" w cudzysłowach, bo wzorce to pojęcie dość abstrakcyjne i często niezależne do konkretnej implementacji, konkretnego języka programowania. Możesz -- i powinieneś -- sam używać wzorców projektowych, pisząc własny kod. Jeśli np. tworzysz w programie jakieś obiekty, powiedzmy połączenie do bazy danych, i ciągle przekazujesz konstruktorom tych obiektów te same lub podobne argumenty, to lepiej napisać sobie metodę (funkcję), która taki obiekt Ci zwróci. Funkcja ta nie musi pobierać żadnych argumentów, a jeśli ma tworzyć obiekty na kilka sposobów, to może mieć np. jeden argument (ew. kilka, choć tego lepiej unikać). To jest wzorzec projektowy zwany Metodą wytwórczą. Jest tak prosty.

Inne wzorce są bardziej skomplikowane. Żeby zaimplementować wzorzec Obserwator, musisz napisać kilkanaście-kilkadziesiąt linijek kodu. Nie jest to jednak szalenie trudne; w ogóle nie jest zbyt trudne.

Teraz, odnośnie tych frameworków... One wykorzystują znany wzorzec MVC (ang. Model-View-Controller -- Model-Widok-Kontroler). To już jest taki trochę większy wzorzec. Można go nazwać wzorcem architektonicznym lub np. mega-wzorcem, bo definiuje całą architekturę aplikacji. Nic nie stoi na przeszkodzie, żebyś w swoich programach samodzielnie implementował wzorzec MVC.

Co do Smarty, to uważam, że one mogą się jak najbardziej wpasować do wzorca MVC. W aplikacjach webowych (włącznie ze zwykłymi stronami www) opartych o MVC praktycznie zawsze używa się jakiegoś systemu szablonów. Z trójki Model/Widok/Kontroler, szablony odpowiadają za Widok. Nie widzę powodu by nie używać tam akurat szablonów Smarty. Można użyć innych. Można też używać samego PHP jako szablonów (wtedy w szablonach nie masz żadnej logiki biznesowej, ale używasz konstrukcji takich jak if czy foreach podobnie jak funkcji {if} i {foreach} w Smarty).

Co do prędkości...

Spodziewasz się jakichś problemów z wydajnością witryny? Czemu? Podaj racjonalne powody. Czy masz zamiar optymalizować odpowiednio bazę danych? Czy masz do tego odpowiednie kwalifikacje? W wypadku wielu witryn to właśnie zapytania do bazy danych czy logika biznesowa składają się na lwią część czasu odpowiedzi. Smarty umożliwia cache'owanie, nie jest też chyba szczególnie wolne. Prawdopodobnie, na Twoim miejscu nie przejmowałbym się wydajnością. Jestem przekonany, że jeśli będą z nią jakieś problemy, to Smarty -- o ile użyjesz go rozsądnie (np. włączysz cache'owanie) -- nie będzie największym problemem.

Wracając do stosowania frameworków: jak najbardziej polecam. Zwykle pomagają. A jeśli użyjesz Smarty, a pozostałą część napiszesz samodzielnie, to prawdopodobnie pozostała część będzie działała gorzej -- będzie mniej bezpieczna i może nawet mniej elastyczna -- niż gdybyś skorzystał z gotowego frameworka. Jeśli jednak się uczysz, to możesz pisać wszystko samodzielnie. Z drugiej strony: opanowanie popularnego frameworka też jest cenną nauką.

2

To ja jeszcze wspomnę to co ostatnio było gadane - o nadużywaniu frameworków. Dobrze jest znać przynajmniej jeden z frameworków - bo bez tego czasem ciężko załapać się na wymagania minimalne jakichś ofert - ale pchanie frameworka do każdego projektu to trochę bez sensu - generalnie - różnicy widać nie będzie (od strony klienta, ew szybkość ładowania) - ale to jak startowanie odrzutowca, żeby polecieć do sklepu 300m dalej - kiedy można wziąć rower..
Smarty generalnie dają rady - każdy kto może (wliczająć porneLa) jedzie po Smartach - ale to naprawdę bardzo prosty język szablonów - i nie widzę powodów narzekania na wydajność (zrobiłem portal lokalnej (dosyć sporej jak na lokalną) gazety - na własnym oprogramowaniu + smarty - problemów z wydajnością nie stwierdzono, mimo iż łazi sporo osób po stronce)

0

Pracuję obecnie w firmie (nazwy nie chce podawać, mała niezależna firma robiąca duże projekty, a w międzyczasie proste wielojęzyczne stronki oparte na własnym cmsie) i jako przykład mogę podać projekt robiony od podstaw z wykorzystaniem smarty bez żadnych innych frameworków. Jest tam zrealizowany podział na województwa i dużo innych funkcji. Ogólnie chodzi o to, że to był naprawdę duży projekt, całość zrobiona z wykorzystaniem mvc itd. i stronka naprawdę szybko śmiga chociaż generuje spory ruch, a nie stoi na super serwerze. Do czego zmierzam? Tworząc samemu projekt od podstaw, nie korzystając z żadnych joomlo-drupalowo-podobnych nie wrzucasz zbędnego kodu, który musi zostać zinterpretowany co wpływa znacząco na wydajność. A smarty? Smarty wcale nie jest takie wolne, kod smarty wcale nie musi być za każdym razem kompilowany (patrz ustawienia cache). Ogólnie smarty polecam, z innych systemów szablonów nie korzystałem dotychczas, więc nie będę się wypowiadał. Oczywiście nie musisz korzystać z żadnego systemu szablonów, możesz jako szablony wykorzystać zwykłe pliki php i korzystać z przesłanych do nich zmiennych. To rozwiązanie jest na pewno wydajniejsze, jednak wtedy musisz konsekwentnie trzymać się tego, że w plikach szablonów NIE OPERUJESZ NA DANYCH. Jak zdobędziesz chociaż takie doświadczenie jak moje, to zrozumiesz o co chodzi. Jeśli jednak to nie jest żaden duży projekt, to śmiało korzystaj ze smarty, zawsze warto się nauczyć czegoś nowego. Może ja jestem jakiś dziwny, ale poznając nowe technologie wpadam na nowe genialne pomysły, które realizuje w nowych projektach, widząc co mi nie pasuje w danej technologii, czy bibliotece samemu piszę taką, która mi odpowiada, co jest ogólnie bardzo rozwojowe i fajne ;]

0
poniatowski napisał(a)

o Smartach mówili, że są znacznie wolniejsze od OPT

Standardowe, wkurwiające porównywanie typu:
"Mój system parsuje instrukcję if dokładnie 4.234 milisekundy szybciej niż twój. Zatkało?"
Które nie ma odzwierciedlenia w rzeczywistości.

0
tajemniczy_koles napisał(a)

Tworząc samemu projekt od podstaw, nie korzystając z żadnych joomlo-drupalowo-podobnych nie wrzucasz zbędnego kodu, który musi zostać zinterpretowany co wpływa znacząco na wydajność.

IMO stwierdzenie na wyrost, z dwóch powodów.

Po pierwsze, nie mówimy tu o Joomli czy Drupalu. To są CMS-y. O ile zrozumiałem intencje autora, to my mówimy o frameworkach. W szczególności: lekkich frameworkach. To NIE są CMS-y. To może być po prostu zbiór przydatnych klas. Często framework definiuje też architekturę, w tym omawianą tutaj MVC. I tyle. Frameworki często nie mają bladego pojęcia o tym, jak zrobić newsy z komentarzami. CMS-y mają tego typu moduły. Frameworki "tylko" ułatwiają ich napisanie. Same w sobie nie zapewniają zarządzania treścią.

Ten podział na frameworki i CMS-y jest nieco mylący, bo akurat te, które wymieniłeś, MOGĄ pracować w trybie frameworkowatym. Tj. można korzystać tylko z zawartego w Joomli MVC i olać konkretne moduły. W ogólności jednak są to CMS-y i jako takie najczęściej są używane.

I druga kwestia, która mi nie pasuje w cytowanym stwierdzeniu. Skąd wiesz, że w tych CMS-ach jest jakiś kod, który jest zbędny, ale musi zostać zinterpretowany i to "wpływa znacząco na wydajność"? Widziałeś/robiłeś jakieś testy? Sama ilość dodatkowego kodu nie musi wpływać negatywnie na wydajność. Tym bardziej, że przecież nie wszystkie pliki CMS-a (czy frameworka) są nawet inkludowane, a więc i nie są interpretowane.

Jeśli zaś mówiąc "CMS" miałeś na myśli faktyczne frameworki, nawet tę Joomlę użytą jako framework, to tutaj nie ograniczajmy się do Joomli i Drupala. Pomyślmy o wspomnianym przez autora tematu Zendzie albo o Code Igniterze. I co, one są wolne? One są nadmiarowe? Użyj ich dobrze: korzystaj z zapewnianych przez nie funkcjonalności, ale bynajmniej nie nadmiarowo. Zbuduj w ten sposób aplikację, przykładając się do pisania kodu. Następnie, zbuduj podobną aplikację, ale bez korzystania z tych frameworków. Porównaj wydajność. Naprawdę wydaje Ci się, że w drugim przypadku byłaby "znacząco lepsza"? ;)

Ja jestem zwolennikiem posiadania umiejętności pisania programów "na czysto", bez frameworków. Ale jeśli chodzi o backend-web-development, panicznie boję się o bezpieczeństwo. Nie dlatego, że jestem ignorantem w tej dziedzinie. Sporo się szkoliłem w tym zakresie. I i tak mam obawę, że pisząc coś od zera umieszczę w aplikacji jakieś krytyczne z punktu bezpieczeństwa bugi. Sprawdzone frameworki dają tu pewną ochronę.

Wracając do wydajności: zwróć, proszę, uwagę na to, co napisał Demonical Monk. Jest taka zasada: przedwczesna optymalizacja to źródło wszelkiego zła. W optymalizacji chodzi o to, by znajdować i eliminować bottlenecki. Jest... wysoce wątpliwe, by jakiś lekki framework sam z siebie miał tak wielki narzut, że byłby on nieakceptowalny. No chyba że się jest Google.

0

Po pierwsze: tak robiłem testy ;]
Po drugie: nie mówimy o cms'ach, zgodzę się z tym chciałem tylko przekazać, że w tym przypadku odnotujemy spadek wydajności o wiele większy niż w przypadku smarty, czym chciałem przekonać autora tematu do korzystania ze smarty.

0

Po rozmowach z ludźmi, którzy w php'ie siedzą od paru lat, korzystali z Zenda/Sf czy czystego php, słyszałem opinie, że od smartów sporo lepszy jest np. Twig. Jest to silnik szablonów. Wykorzystywany domyślnie w Symfony 2. Jak myślicie? Twig pozwala na dziedziczenie itp., co jest ciekawą sprawą. Smarty też na to pozwalają?

0

W Twigu nic na poważnie nie robiłem, w Smartach robię od lat. Smarty bywa irytujący ze swoimi ograniczeniami, ale da się go przetrawić. Twig ma przynajmniej automatyczne escape'owanie zmiennych

1 użytkowników online, w tym zalogowanych: 0, gości: 1