Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/OOP][CSS] Generator CSS
Forum PHP.pl > Forum > PHP > Object-oriented programming
sniezny_wilk
Witam,

wpadłem na pomysł napisania klasy która generuje kod CSS, ale chwilkę później mój zapał ostudziło pytanie "Czy to się opłaca pisać i czy będzie wydajne?". Z takim pytaniem zwracam się do Was. Może ogólny zarys, co klasa będzie potrafiła:

- tworzenie całego css i wrzucanie go pomiędzy znaczniki <style> w kodzie strony, pisanie css do elementów na zasadzie uzupełnienia wartości style="",
- zmiana już istniejącego css (wczytanie css'a), czyli zmiana poszczególnych atrybutów itp,
- wszystko na wyrażeniach regularnych i tablicach przechowujących wartości.

No i po rozważeniu to na plus:
+ możliwość pisania swobodnie CSS, co za tym idzie elastyczność - dzięki dynamicznemu tworzeniu.
+ możliwość szybkiej zmiany już istniejącego pliku CSS
+ wszystko odbywa się po stronie serwera nie trzeba ciągle aktualizować/zmieniać całych plików CSS, a wydaje mi się to poręczne.
+ szybsza obsługa zmiany template strony z poziomu użytkownika, możliwość zmiany wszystkich np. kolorów na stronie (?)

Jeśli chodzi o minusy:
- żmudne tworzenie (!) np: (kod pisany na szybko).
  1. <?php
  2. $css = new CssGenerator();
  3. $css -> newClass("body");
  4. $css -> setAttribute("body","background-color","#FF0000");
  5.  
  6. echo $css -> getCss();
  7. ?>

- szybkość obsługi i wpływ na generowanie się strony,
- czy to jest w ogóle potrzebne (?)(!),
- czy ma sens takie tworzenie xHTML/CSS z poziomu PHP - w sumie jeśli chodzi o to to istnieje xAJAX, czyli tworzenie JS z poziomu PHP

Chciałbym poznać Wasze opinie na ten temat, czy to ma sens i czy warto coś takiego pisać. Prosiłbym też o odniesienie się do moich za i przeciw smile.gif
Będę wdzięczny za jakiekolwiek opinie na ten temat. Z góry dzięki smile.gif
Kocurro
Jeśli dasz dobre cacheowanie to pomysł może być nawet całkiem całkiem ... tyle, że ja bym od razu sprzągł z jakimś rozbudowanym systemem generowania html'a opartym na widgetach oraz powiedzmy xml'owych templatach. No dobra wyobraźnia mnie poniosła winksmiley.jpg

Pomysł Twój wydaje mi się całkiem ciekawy - chociaż wszystko zależy od tego jak to zrobisz ...

pozdr.
sniezny_wilk
Dzięki za odpowiedź.

Dokładnie tak, chciałbym stworzyć system generowania xhtml w PHP, w skład którego wchodziły by klasy odpowiedzialne za JS oraz CSS.

@Kocurro: Jakie cacheowanie masz na myśli ? Jak mogę to zrobić ? Jakiś prosty przykład ?

EDIT: właśnie wpadłem na pomysł cachowania zapytań z serwera i zapis ich do pliku, po przeczytaniu postu tutaj, zapis do pliku - czemu nie, co sądzicie ?
grzesiek_g
Cytat(sniezny_wilk @ 4.03.2008, 21:07:05 ) *
No i po rozważeniu to na plus:
+ możliwość pisania swobodnie CSS, co za tym idzie elastyczność - dzięki dynamicznemu tworzeniu.

Ja tutaj swobody nie widzę, np chcę zmienić skórkę a nie znam/ boję się PHP i co wtedy?
Cytat
+ możliwość szybkiej zmiany już istniejącego pliku CSS

Wszystko ok jeśli masz skrypt, a co jeśli musisz się przekopywać przez tysiące linii CMS-a?
Cytat
+ wszystko odbywa się po stronie serwera nie trzeba ciągle aktualizować/zmieniać całych plików CSS, a wydaje mi się to poręczne.

Znienawidzona przeze mnie Joomla widziałem, że ma mozliwość edycji online arkuszy stylów wchodzących w skład templatki.
Cytat
+ szybsza obsługa zmiany template strony z poziomu użytkownika, możliwość zmiany wszystkich np. kolorów na stronie (?)

Patrz wyżej, o ile szybciej otworzę plik styles.css i na podstawie tego co mi pokaże Firebug zmienie atrybuty dla odpowiedniego elementu / klasy?

Uwierz mi, szkoda Twojej pracy, a energię poświęć na coś co przyniesie jakieś korzyści.

Jeśli chodzi o zmiany wyglądu to może lepiej niektórym elementom w CMS / skrypcie dodać możliwość dynamicznego tworzenia nazw klas. Może dam przykład:
  1. <body class="klasa_statyczna <?= $klasa_dodatkowa_body ?>">
  2. <div id="container"<?= ($klasa_dodatkowa_container)?' class=" ' . $klasa_dodatkowa_container . "':'' ?>>
  3. </div>
  4. </body>
Moli
Jak chcesz napisać jakąś klasę do css, to może kolorowanie kodu css ? smile.gif Bo ja podobnie jak grzesiek_g nie widzę użyteczności takiej klasy, bo żeby coś w pliku css zedytować i tak trzeba znać atrybuty winksmiley.jpg
sniezny_wilk
Cytat(grzesiek_g @ 5.03.2008, 10:43:46 ) *
Uwierz mi, szkoda Twojej pracy, a energię poświęć na coś co przyniesie jakieś korzyści.

Jeśli chodzi o zmiany wyglądu to może lepiej niektórym elementom w CMS / skrypcie dodać możliwość dynamicznego tworzenia nazw klas. Może dam przykład:
  1. <body class="klasa_statyczna <?= $klasa_dodatkowa_body ?>">
  2. <div id="container"<?= ($klasa_dodatkowa_container)?' class=" ' . $klasa_dodatkowa_container . "':'' ?>>
  3. </div>
  4. </body>


To właśnie też.

Cytat(grzesiek_g @ 5.03.2008, 10:43:46 ) *
Ja tutaj swobody nie widzę, np chcę zmienić skórkę a nie znam/ boję się PHP i co wtedy?


Klasa będzie tylko dla mnie do własnej wygody i użyteczności, skórkę - czytaj kolory, czyli robisz userowi inputy, do których może wprowadzić kolory, później np tworzony template i cachowany na serwerze.

Klasa może być/będzie częścią większej klasy coś takiego jakby page generator z poziomy PHP.

@Moli: żadne kolorowanie smile.gif nie user będzie generował, a ja. To ma służyć mojej wygodzie

@grzesiek_g: Nie bardzo rozumiem tego:

Cytat(grzesiek_g @ 5.03.2008, 10:43:46 ) *
Wszystko ok jeśli masz skrypt, a co jeśli musisz się przekopywać przez tysiące linii CMS-a?


Czemu tysiąc ? Zmieniając styl, też musisz przekopać trochę linii, a jeśli plik tworzący CSS na podstawie klasy, będzie w osobnym includowanym pliku ?

Może jaśniej ta klasa, czy nawet page generator, będzie całością dużego projektu, który piszę sam, do projektu komercyjnego, strona użytkownika będzie mogła na podstawie tej klasy zmienić sobie np kolory template.

A co z tym cachowaniem? I wykorzystać takiego Page Generatora do tworzenia szablonów.. ?
Moli
Cytat
Czemu tysiąc ? Zmieniając styl, też musisz przekopać trochę linii, a jeśli plik tworzący CSS na podstawie klasy, będzie w osobnym includowanym pliku ?

Ale pliki z css'em mają dużo mniej kodu niż pliki php z kodem systemu smile.gif I łatwiej w nich coś zmienić smile.gif

Ale jeśli to ma być możliwość zmiany danych elementów na stronie (czyli np. tła w profilu dla danego użytkownika) to chcesz tworzyć plik css dla każdego użytkownika ? Nie lepiej zapisać te informacje w bazie i wyświetlić na stronie w <style..></style> ?
Sedziwoj
Skomentuję, bo widzę pewien brak w widzeniu sprawy.
U mnie w pracy nie wyobrażam sobie aby coś ze styli miało być w PHP, czy gdzieś indziej (chyba że to ma być konfigurowalne przez użytkownika, ale to już inna rzecz), jak masz osobę która zajmuje się cięciem strony, wcale nie musi wiedzieć co zrobi <?php echo "a"; ?> nie mówiąc o czymś bardziej skomplikowanym. Więc to odpada, do tego po co coś co jest z warstwy prezentacji wpychać w inne warstwy, robić zależności i się nimi przejmować.
Liczna linijek w pliku css wcale nie jest tak do nie pojęcia, ale jak się tym zajmujesz, dlatego przydaje się rozdzielenie tego na osoby, bo każda może zająć się czymś co zna lepiej.
Cysiaczek
To do tego wystarczy w php zwykła klasa reprezentująca arkusz i wypluwająca kod css na wyjściu (dołaczająca zewnętrzne aruksze też).
sniezny_wilk
Cytat(Cysiaczek @ 19.03.2008, 21:39:11 ) *
To do tego wystarczy w php zwykła klasa reprezentująca arkusz i wypluwająca kod css na wyjściu (dołaczająca zewnętrzne aruksze też).


Tak, zrezygnowałem z tego pomysłu.. macie rację trochę bez sensu, lepiej zajmie się czymś bardziej potrzebnym smile.gif
Cysiaczek
To by miało sens, gdyby zrobić to tak jak mają javowe frameworki do obsługi okienek.
  1. <?php
  2. $div=new Div();
  3. $style=new Style();
  4. $style->setBackgroundColor('black');
  5. $div->appendAtrribute($style);
  6.  
  7. $page=new Document();
  8. $page->appendChild($div);
  9. //o albo z użyciem DOM
  10. ?>


Jednak strony www mają nieco inną budową niż okienka i są bardziej wymagające (okna posiadają już pewien określony interfejs)

Pozdrawiam
Sedziwoj
Powiem tak rozdzielenie formatowania wyglądu od kodu jest ułatwieniem, z tego co wiem, to ludzie trochę klną tworzenie interfejsów w np. Java.
Nie wiem czy się interesowaliście, ale M$ w nowym pakiecie do tworzenia aplikacji zaczął używać XAML do opisu wyglądu. I moim zdaniem do tego będzie dążyć... ale zobaczymy.
(o tym pakiecie mówiłem http://www.microsoft.com/expression/ )
sniezny_wilk
Cytat(Cysiaczek @ 20.03.2008, 08:02:27 ) *
To by miało sens, gdyby zrobić to tak jak mają javowe frameworki do obsługi okienek.
  1. <?php
  2. $div=new Div();
  3. $style=new Style();
  4. $style->setBackgroundColor('black');
  5. $div->appendAtrribute($style);
  6.  
  7. $page=new Document();
  8. $page->appendChild($div);
  9. //o albo z użyciem DOM
  10. ?>


Jednak strony www mają nieco inną budową niż okienka i są bardziej wymagające (okna posiadają już pewien określony interfejs)

Pozdrawiam


O coś takiego mi chodziło mniej więcej. Tylko co później z tym stylem ? Zapisywany do pliki, tworzony dynamicznie ?
Cysiaczek
Właśnie o to chodzi, że nic z tym nie robisz. Po prostu programujesz wygląd strony w php. Chyba, że jako cache można uznać arkusz CSS ;p
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.