Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: szablony
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
bregovic
Hejka.
Jestem w trakcie tworzenia czegos pomiedzy frameworkiem a cmsem (wlasciwie to jestem w trakcie planowania). System ma byc latwy do wykorzystania przez programistow do wykonywania aplikacji dostosowanych do ich potrzeb.

Glowne planowane zalorzenia aplikacji to:
  • Elastycznosc we wszystkich mozliwych akcjach.
  • Obiektowosc umozliwiajaca latwa ingerencje programisty w system.
  • Ekstremalna modulowosc - system nie bedzie mial zadnych funkcjonalnosci sam w sobie, poza autoryzacja i zjednoczeniem administracji.
Planowane jadro bedzie skladac sie z nastepujacych klas/modulow:
  • Engine - bedzie inicjalizowal reszte modulow.
  • Error - zapisuje bledy i reaguje w zaleznosci od powagi bledu (3 stopniowa skala).
  • Config - modul ladujacy do jadra konfiguracje systemu i konfiguracje strony z plikow .ini.php
  • Db - abstrakcja abstrakcji bazy danych.
  • Site - modul zazadzajacy strona i podstronami - zbierajacy informacje o hoscie, aktualnie requestowanej stronie itp.
  • Tpl - abstrakcja systemu szablonow...
  • Auth - abstrakcja modulu autoryzacji.
Struktura tabeli bazy danych lezy na http://bplusf.net/phppath.gif.

Co do modulu Db - to rozwazalem oczywiscie uzycie Adodb, PEAR:: DB badz PEAR::MDB2 - lecz sa to imo rozwiazania przerastajace to co jest mi potrzebne.

Wiec, przechodzac do tematu tego posta - co sadzicie o szablonach? Nie wiem jak to rozwiazac - oczywistym wyborem bylby Smarty - lecz to nie ma byc czysty cms gdzie kazdy moglby edytowac templaty - targetem systemu sa programisci. Pozatym osobiscie nie lubie Smarty za jego wage i za duza ilosc funkcji.
Rozwazalem tez Savanta, ale nie lubie jego zaleznosci od PEAR. oczywiscie najlatwiej byloby mi napisac wlasne rozwiazanie z uzyciem php jako jezyka szablonow... lecz wacham sie co do poprawnosci takiego rozwiazania... moze jednak zwykle, parsowane szablony bylyby lepsze?

Boje sie troche o bezpieczenstwo jesli uzyje systemu a'la Savant wtystarczy wsadzic troche smiecia w szablon i juz mamy rozwalona strone - cos trudne do osiagniecia z systemem a'la Smarty...

Co myslicie?
Bede wdzieczny za kazda opinie.

(edit: zmienilem pare info o systemie szablonow i db, i auth)
kicaj
Zapowiada sie ciekawie, zreszta jak kazdy plan na napisanie "powaznego" CMS'a. Zobaczymy czy poradzisz sobie z tym jak to zaplanowales.
Co do systemu szablonow to, jesli masz napisac CMS'a to i szablony warto byloby napisac wlasne.
Jesli spelnisz ustalone trzy glowne zalozenia, to ten CMS bedzie warty uwagi...
Czekamy co z tego wyniknie biggrin.gif
bregovic
Dzieki. siedze i planuje ten projekt juz od 2 miesiecy i dostaje swira powoli...
Czyli wg ciebie najlepiej byloby sie posluzyc systemem szablonow parsowanych?
kicaj
Cytat(bregovic @ 2004-06-30 00:11:09)
Dzieki. siedze i planuje ten projekt juz od 2 miesiecy i dostaje swira powoli...
Czyli wg ciebie najlepiej byloby sie posluzyc systemem szablonow parsowanych?

Planujesz 2 miesiace, a ile robisz :PPP
Uzywaj wlasnych systemow, mysle ze moglbys uzyc takze wlasnego parsera do szablonow...
bregovic
Planuje dwa miesiace i... zrobilem juz 3 pol-dzialajace prototypy systemu. Za to planowania jest naprawde duzo. Co prawda teraz wydaje mi sie to strasznie latwe - ale jak zaczynalem nad tym myslec 2 miesiace temu to byl koszmar.

Przedewszystim totalne zawirowanie co do sposobu pracy nad szablonami - przez chwile bylem pewien ze uzyje Smarty - bo to taki 'standard'. Potem napadl mnie pomysl uzycia czegos w stylu Savanta, w kazdym razie uzycia php jako jezyka templatow - tak jak to opisuje brian lozzier. Lecz wtedy udezylo mnie ze takie templaty beda strasznie niebezpieczne - wystarczy 'cos' wsadzic w templata i strona nie chodzi...

Z tym wsyztskim wymieszalo sie poszukiwanie abstrakcji do bazy danych - od poczatku zakladalem istnienie jakiejs abstrakcji, tylko ktorej? Dokopalem sie do PEAR::MDB2 - najsensowniej wygladajacego wyjscia.

I wtedy zrobilem male demo w trzech wersjach: wkorzystujace Smarty, Savanta, i lekko zmodyfikowana klase ze strony Briana Lozziera (bez cacheowania itp). Wszystkie przyklady uzywaly MDB2, i mialy wyswietlac tabelke z bazy. Przyznam ze gdy zmierzylem czasy parsowania - to opadla mi szczeka. Krotko mowiac Smarty byl baaardzo daleko w polu, podazal za nim Savant (wydaje mi sie ze to przez jego zalerznosc od PEAR), a na koncu byl lekko zmodyfikowana klasa Lozziera.

Chyba sie juz przekonalem ze bede musial napisac wszytsko sam... wrr. Nie lubie Wynajdywac kola... Ale w tym przypadku kola chyba nie sa dosc okragle zeby potoczyc moj projekt winksmiley.jpg
kubatron
bregovic:Zauważ iż Smarty ma dużo mozliowści które będą ci bardzo potrzebne, wątpie żębyś napisał lepszy sys.szablonów od smartego który ci umili prace w tworzeniu CMS's(Content Managament System) jak planujesz użyć ADoDBa to czemu nie smartego?Wkoncu te dwie aplikacje są potężne i mogą ci umilić prace.W każdej chwili po napisaniu CMS'a będziesz mógł napisać swój sys.szablonów, teraz proponuje to zostawić smartemu.Głównym twoim celem powinnien być silnik,jądro ponieważ od nich będzie zależel jego stan aplikacji który pomoże w przyszłosciowej rozbudowie, także zauważyłem ze masz zamiar pisać Error Handlera bardzo dobrze każdy CMS's powinnien zawierać to ponieważ użytkownik wchodzący na strone niepowinnien widzieć błędu typu np. Fatal Error: ponieważ osoby takie nie są uprawnione.W module Error Handlera pamiętaj o tym żeby administratorzy dostawali na @ lub PW wiadomośc o wystąpieniu błędu.
To by było na tyle jesli masz jakieś pytania zadawaj biggrin.gif
Ace
juz kiedys na forum byl poruszany temat smarty vs inne systemy szablonow, kazdy ceni sobie w kazdym systemie co innego. Jedni zapierali sie ze smarty sa powolne, a inni podkreslali ze co z tego, jesli maja wielkie mozliwosci, a straty zedu 0,01 - 0,02 sec w generowaniu strony mozna przezyc. To wszystko od ciebie zalezy czego uzyjesz, ale sam napisalem cms'a na Smarty'ach i musze powiedziec ze jak na 1 raz to jestem zadowolony. Zapemniam cie ze jak skaczysz pisac swojego CMS'a to najdzie cie kupa pomyslow w stylu " hehe jak moglem taki blad popelnic... Przeciez to spowalnia system " Znajdziesz kupe rozwiazan ktore beda lepsze niz obecne... I wtedy nachodzi cie mysl, zeby napisac CMS ver 2.0 winksmiley.jpg wtedy masz pole do popisu, masz juz doswiadczenie w pisaniu takich aplikacji i mozesz experymentowac. A dlaczego tylko smarty ? zrob odpowiednie moduly ktore umozliwia tobie uzycie Smartyego i innych szablonow... winksmiley.jpg

pozdrawiam
dooshek
Cytat
Ekstremalna modulowosc - system nie bedzie mial zadnych funkcjonalnosci sam w sobie, poza auitoryzacja i zjednoczeniem administracji.


Jesli ma byc extremalnie modulowy to czemu autoryzacja i administracja ma byc czescia tego czegos. Wlasciwie ani to framework ani CMS... Jesli juz piszesz framework to niech to bedzie framework - CMS do tego bedzie po prostu aplikacja korzystajaca z framework'a a nie bedzie jego czescia! To sie kloci troche, nie uwazasz?

Jesli chodzi o to czy smarty, czy savant, czy moze fasttemplate, czy moze cos co sam napiszesz... Jesli to ma byc dla programistow to stworz mozliwosc podlaczenia tego co sobie programista chce podlaczyc. A moze on juz ma swoj system templateow i chcialby go wykorzystac? Moze ma swoja wlasna abstrakcje bazy danych?

Ja to widze tak, ze taki system (engine, framework, jadro, core czy jak to zwal) ma minimalna funkcjonalnosc - udostepnia po prostu podstawowe operacje (ladowanie modulow, rozszerzen, pluginow itp) natomiast cala sila moze tkwic w modulach konkretnych ktore napiszesz - bo kto Ci wtedy broni napisac modul CMS.

Wracajac jeszcze do autoryzacji - to pomysl, ze ja np. wykorzystujac Twoj system (engine, framework, jadro, core czy jak to zwal winksmiley.jpg chcialbym miec zupelnie inny sposob autoryzacji niz Ty. Co wtedy mam zrobic? Rozgrzebac jadro? Ok - moge to zrobic ale wtedy Ty wypuszaczajac kolejnego release'a nadpiszesz moje zmiany i szlag mnie trafi... Pomysl o tym...

Mam nadzieje, ze duzo nie namieszalem - ale to ciekawy temat. Ja aktualnie tez cos pisze, wiec mozna sie podzielic doswiadczeniami smile.gif
bregovic
@kubatron: W sumie masz racje. Znam potege Smarty, Adodb i innych systemow - lecz na poczatku myslalem ze to jest za duze dla 'mojego malego systemu'...

@dooshek: I chyba tak zrobie... napisze abstrakcjie na abstrachowanie na rozne systemy abstrakcji db i rozne systemy templatow.... ale zaczne chyba od pisania wlasnych systemow - dla rozgrzewki.
Co do pytania o admina i autoryzacje - to jest cos co w systemie byc musi - i dlatego imho powinno znalezc sie tam od poczatku. Ale masz racje w tym ze to zmniejsza modularnosc - chyba moje wakacje wypelnia sie pisaniem samych abstrakcji biggrin.gif
hawk
IMHO savant jest bez sensu bo to samo mogę sobie sam zrobić bez żadnej zewnętrzenej biblioteki. W zasadzie tak robiłem jak jeszcze nie wiedziałem co to smarty itd biggrin.gif. W zamian dostajesz, nie wiadomo po co, uzależnienie od PEAR.

Co do bezpieczeństwa - można w to wrzucić np FACL i już jest nieco lepiej. Choć parsowanie tego przy każdym wykonaniu rozwali wydajność...
Ozzy
Zawsze można napisać swojego "savanta" nie przywiązanego do PEAR'a.
To nie prawda, że savant jest niebezpieczny, wszystko zależy od tego jak go wykorzystasz. Moje doświadczenia z tym systemem są bardzo pozytywne, bez keszowania można zejść w okolice 0.01 (cała strona) z zachowaniem funkcjonalności oferowanej przez składnię php;)
bregovic
@hawk: oczywiscie - savant jest kiepawy z jego zaleznoscia od PEAR - chodzilo mi o system tego typu - czyli z uzyciem skladni php i bez parsowania templatow - lecz nie koniecznie sam savant winksmiley.jpg

@Ozzy: tak wlasnie mialem zamiar zrobic. Co do bezpieczenstwa - to przeciez wystarczy ze jakis mosiek wstawi die(); w ktoryms z templatow nalezacych do modulow i caly system sie rypie... Oczywiscie - mozna powiedziec ze to wina admina strony - ktory dal moskowi prawo edycji templatow - ale jednak... No bo jesli ktos chcialby wykozystac moj system jako cms sensu stricte to jest duze prawdopodobienstwo ze bedzie edytowal templaty. Jest tez calkiem spore prawdopodobienstwo ze zalatwi sobie kolegow ktorzy maja mu pomoc...

Problem polega na tym ze w templatach parsowanych to system zazadza tym co mozna a tym co nie mozna w templacie - natomiast w systemach klasy savanta, kazdy z dostepem do templatow moze zazadzac mozliwosciami. Hmm...
Ludvik
Skoro to ma być elastyczne, to wybór systemu szablonów powinien być wyborem administratora serwisu. Osobiście zrobiłbym interfejs obsługi szablonów, podpasował istniejące systemy i dał wybór przez prostą zmianę w konfiguracji całego systemu. Do pakietu zawsze możesz dołączyć wszystkie systemy, bądź przygotować osobne dystrybucje dla osobnych systemów (jeżeli chcesz, żeby całość nie była zbyt duża). A jako domyślny widzę smarty w roli faworyta.
bregovic
szczeze mowiac myslelem zeby podstawowa dystrybucja skladala sie tylko z pliku instalacyjnego ktory cala reszte sciagalby z serwera. wtedy dystrybucja bylaby minimalna - i system bylby dopasowany wg uzytkownika ustawien... system podobny do instalatora pear winksmiley.jpg

co do szablonow to jak juz mowilem, wiem - napisze abstrakcje dla szablonow winksmiley.jpg
ale niestety sprawa bedzie martwa przez 3 tygodnie - laptop nie wrocil z serwisu ;/
Riklaunim
Skóry robić najlepiej takie jakie oferuje AutoTheme - proste w nauce tworzenia skór oraz oferujące wiele opcji smile.gif http://spidean.mckenzies.net/

Co do bazy danych zobacz ezSQL smile.gif http://php.justinvincent.com/
Ozzy
W moim przypadku tylko ja mam dostęp do tych szablonów, więc mogę sobie na to pozwolić. Nie bardzo tylko rozumiem po co ktoś miałby korzystając z Twojego CMSa wstawiać die()? Chyba, że rozmawiamy o czymś w stylu bloga, gdzie każdy może edytować swój szablon...
FiDO
Wlasnie jestem w fazie produkcji swojego systemu szablonow.

Bazuje sie na Smarty jesli chodzi o skladnie, bo bardzo mi sie ona podoba i jest wg mnie dosc intuicyjna. Wiekszosc w zasadzie juz mam zrobiona. Podstawowe zmienne, modifiery z parametrami lub bez, petle, dodatkowe tagi jako pluginy, dodatkowe modifiery jako pluginy. Wiele wiecej ponadto nie mam zamiaru implementowac, chce w miare dobrze wywazyc mozliwosci (Smarty IMHO ma ich troche za duzo) z wydajnoscia. Podobnie jak Smarty jest to system z kompilowanymi szablonami do kodu php, dzieki czemu zyskuje na wydajnosci (wstepne testy juz przeprowadzilem i musze nieskromnie ;] powiedziec, ze nie spodziewalem sie tak dobrych wynikow).
Chcialbym przy tej okazji zrobic jakies porownanie kilku najbardziej popularnych systemow szablonow pod wzgledem wydajnosci. Nie chce jednak, aby test byl subiektywny (bedac autorem jednego z uczestnikow jest on na to narazony), wiec chcialbym aby mi ktos (moze byc wiecej ktosiów winksmiley.jpg ) pomogl dobrac testy jakie wypadalo by wykonac, aby wyniki byly mozliwie dobrze odzwierciedlaly rzeczywista wydajnosc.
Szukalem po necie roznych benchmarkow, ale nic konkretnego nie znalazlem. Wszedzie tylko zwykle porownania szablonu, w ktorym jest iles tam zmiennych czy tez prosta petla w szablonie z kilkoma zmiennymi w srodku (oczywiscie takie testy tez wypada wykonac, ale przydalo by sie tez cos ambitniejszego).
Jacys chetni? snitch.gif

Przydalo by sie tez paru chetnych do potestowania samej klasy szablonow, w koncu sam wszystkich błędow nie znajde smile.gif
Ace
chwtnie bym ja przetestowal. Napisalem juz swoj system szablonow, jest dosc podobny do Smarty, ale nazwy funkcji spolszczone, co wiecej, musze sobie przypomniec jego obsluge bo pisalem go w Lutym, zapowiadal sie dobrze ;] ale z braku czasu zostawielm go. Chetnie przetestuje twoj system szablonow, o moze nasuna mi sie jakies przyklady ktore mozna uzyc w testach... jakis link do szablonow z opisem instalacji/uruchomienia/obslugi questionmark.gif

pozdrawiam
treewood
Moze troche offtopic

Ace napisal:
"jest dosc podobny do Smarty, ale nazwy funkcji spolszczone"

No to genialnie stary ... bo ja ze spolszczonych funkcji robie z reguly "zangielszczone" :P
FiDO
treewood: ja tez smile.gif

Ace: nie dam linka, bo mi wszystkie serwy popadaly albo sa w trakcie konserwacji, wiec nie mam gdzie wystawic, podaj mi maila na PW to Ci posle.
Aha... ale opisu instalacji/obslugi jeszcze nie ma smile.gif To jest wersja alpha, jeszcze bez dokumentacji uzytkownika, ale jest przykladowy szablon z przykladowym uzyciem, po tym mozna do wszystkiego dojsc, pozatym obsluga jest prawie identyko jak Smarty (zeby latwiej bylo mi sie przesiasc :]), wiec jak go znasz to nie ma problemu.
Ace
Cytat("treewood")
No to genialnie stary ... bo ja ze spolszczonych funkcji robie z reguly "zangielszczone" tongue.gif
cool....

PW poszlo FiDo
bela
http://bplusf.net/phppath.gif
jak sie robi takie ładne wykresy smile.gif
Yarecki
Programem Dezign for Databases
http://www.datanamic.com/
bela
dzieki smile.gif
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.