Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] W większych projektach
Forum PHP.pl > Forum > PHP
Fifi209
Nie wiem czy to dobry dział.
Czytałem dziś od rana pełno tekstów/dyskusji na temat wzorów projektowych, pisania cms/frameworków. Lecz dalej nie wiem jak "ugryźć" tematykę pisania np. swojego cms.

Do tej pory wszystkie moje projekty, były oparte o różne klasy (oczywiście mojego autorstwa) które dawały wynik (stronę).
Skończyły mi się pomysły i teksty w internecie, których bym nie przeczytał.

Jakie założenia stawiałbym przy pisaniu cms?
  1. Obiektowo
  2. Elastycznie
Co chciałbym dać użytkownikowi do dyspozycji?
Dokładnie to co mu się podoba, chciałbym zrobić system pluginów/dodatków, które mógłby sobie sam pobrać i zainstalować.


Nie wiem nadal jak rozwiązać sprawę "komunikacji" klas między sobą.
Zastanawiałem się nad napisaniem jądra/kernela (była dyskusja o tym na php.pl), lecz nie mam zielonego pojęcia jakby miał działać.

Jak moim zdaniem wyglądać miałoby jądro i za co byłoby odpowiedzialne ?
  • Zarządzanie klasami, które są potrzebne w danej chwili.
  • Zarządzanie pluginami i ich wczytywanie w razie potrzeby.
Kolejnym problemem, który nie wiem jak ugryźć to obsługa wyjątków.
Pyt: Kiedy i gdzie będą mi potrzebne?
Odp: Wszędzie tam gdzie powstanie błąd uniemożliwiający dalsze działanie skryptu(ów).

Moim zdaniem, "łapanie" wyjątków nie zawsze jest proste i wygodne.


Chciałbym wiedzieć jak Wy rozwiązujecie te (może) banalne problemy.
tanwel_programmer
Cytat(fifi209 @ 27.03.2009, 19:23:41 ) *
Nie wiem czy to dobry dział.
Czytałem dziś od rana pełno tekstów/dyskusji na temat wzorów projektowych, pisania cms/frameworków. Lecz dalej nie wiem jak "ugryźć" tematykę pisania np. swojego cms.

Do tej pory wszystkie moje projekty, były oparte o różne klasy (oczywiście mojego autorstwa) które dawały wynik (stronę).
Skończyły mi się pomysły i teksty w internecie, których bym nie przeczytał.

Jakie założenia stawiałbym przy pisaniu cms?
  1. Obiektowo
  2. Elastycznie
Co chciałbym dać użytkownikowi do dyspozycji?
Dokładnie to co mu się podoba, chciałbym zrobić system pluginów/dodatków, które mógłby sobie sam pobrać i zainstalować.


Nie wiem nadal jak rozwiązać sprawę "komunikacji" klas między sobą.
Zastanawiałem się nad napisaniem jądra/kernela (była dyskusja o tym na php.pl), lecz nie mam zielonego pojęcia jakby miał działać.

Jak moim zdaniem wyglądać miałoby jądro i za co byłoby odpowiedzialne ?
  • Zarządzanie klasami, które są potrzebne w danej chwili.
  • Zarządzanie pluginami i ich wczytywanie w razie potrzeby.
Kolejnym problemem, który nie wiem jak ugryźć to obsługa wyjątków.
Pyt: Kiedy i gdzie będą mi potrzebne?
Odp: Wszędzie tam gdzie powstanie błąd uniemożliwiający dalsze działanie skryptu(ów).

Moim zdaniem, "łapanie" wyjątków nie zawsze jest proste i wygodne.


Chciałbym wiedzieć jak Wy rozwiązujecie te (może) banalne problemy.



Jeżeli chodzi o komunikację to wydaje mi się źe mugłbyś zadeklarować metodę bądź funkcję typu checkExist($Nazwa); - Która pobiera z bazy danych występowanie danego modułu i ewentualne odniesienie się do jego strony.
Jeżeli np: Miałbyś każdy moduł w osobnym katalogu i wiadomo że w każdym z modułów jest plik "index.php" to mógłbyś stworzyć strukturę danych posobną do tej:
CODE
SQL:
CREATE TABLE `Moduly`(`id` integer NOT NULL PRIMARY KEY, `nazwaModulu` varchar(20), `katalogRoboczy` varchar(20), versja varchar(5));

teraz możesz za każdym wywołaniem funkcji sprawdzić i ewentualnie pobrać lokalizację pliku "index.php" a nawet zaimplementować funkcję sprawdzającą czy dana wersja modułu jest obsługiwana przez aktualną wersję twojego "modułu głównego" CMS.
możesz równierz zaimplementować serię stałych rozkazów w twoich klasach które one wykonją i przekazywać te rozkazy za pośrednictwem sesji $_SESSION albo ciastek $_COOKIE.
Powiedzmy że każdy z modułów obsługuję taką metodę jak "lista();" a każdy moduł robi inne rzeczy np :listuje użytkowników, listuje obrazy w galerji itp. Wystarczy że umieścisz zmienną $_SESSION["ORDER"]="LIST'; i wywołasz odwołanie do pliku index.php innego m,odułu. Wtedy możesz zrobić coś w stylu:
CODE
switch($_SESSION["ORDER"]){
case "LIST": {$klasa->metoda_wyswietlania_listy();}break;
}//end of switch

Podobnie ja robię przy moich CMS'ach, ale możliwe że są o wiele prostsze metody 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.