![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 167 Pomógł: 0 Dołączył: 30.04.2004 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
Witam
Tworzę właśnie pewien portal, a przy okazji framework, który ma mi się przydać do dalszych zastosowań. Cały framework ma zastanowić zamkniętą skrzynkę klas w których nie będzie się nic edytowało, a ewentualną zmianę/rozszerzenie funkcjonalności będzie się osiągało poprzez dziedziczenie z klas bazowych/tworzenie nowych klas. Jak na razie wykombinowałem to tak, ze mam katalog system w którym znajduje się cały framework i katalog application/main w którym znajduje się kopia wszystkich klas frameworka i każda klasa (o ile nie wymaga zmiany funkcjonalności) wygląda tak: Kod namespace WebApp; class JakasKlasa extends \Framework\JakasKlasa { } Jednocześnie we wszystkich plikach frameworka nie odwołuję się nigdy do przestrzeni Framework tylko zawsze do przestrzeni WebApp dzięki czemu osiągam to co chciałem - dowolna klasa frameworka może zostać w danej aplikacji zmieniona na inną czy to przez dziedziczenie czy to przez napisanie klasy od podstaw. Minusy tego rozwiązania: - wymuszam sytuację, że rozszerzenie frameworka musi znajdować się zawsze w przestrzeni WebApp (chociaż to chyba można by ruszyć poprzez ładowanie przestrzeni z plików konfiguracyjnych) - wymuszam sytuację, że dla każdej klasy frameworka musi istnieć klasa w przestrzeni WebApp nawet jeśli nic szczególnego się w niej nie dzieje tzn. jeśli dziedziczy ona tylko po klasie z framworka Pytanie do Was - co sądzicie o opisanym rozwiązaniu i czy można się jakoś prosto pozbyć drugiego minusa tzn. tworzenia w zasadzie pustych plików które nic nie wnoszą? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 9.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Podstawiasz sobie nogę już w samych założeniach wg mnie. Sam budując system trzymałem się zasady KISS i sprawdza się ona świetnie.
Jeżeli mówisz o samym ładowaniu klas to czemu nie skorzystać z PSR-0 ? Sam wykorzystuję tę propozycję z małymi modyfikacjami i sprawdza się świetnie. http://groups.google.com/group/php-standar...-final-proposal Obrałem sobie przestrzeń App na moją aplikację i napisałem autoloader (spl_autoload_register zobacz czy jakoś tak). Chcę odpalić moduł ?
chcę odpalić część administracyjną modułu ?
Trzeba mi bibliotekę "strzelGola" od Batmana ?
itp itd etc. Autoloader działa gdy tworzysz nowy obiekt, działa gdy obiekt rozszerza inny obiekt. Biblioteki są zawsze ułożone wg schematu: katalog_z_bibliotekami/dostawca/nazwa.php za wyjątkiem modułów na który jest osobny katalog (co autoloader też pokrywa). Bez problemu działa to z takimi funkcjami jak class_exists itp więc w moim frameworku w ogóle nie używam include/require ręcznie. Do tego o ile się orientuję, nazewnictwo PSR-0 staje się coraz bardziej popularne co właściwie gwarantuje mi że w przyszłości będę mógł wykorzystywać biblioteki od różnych dostawców i frameworków nie martwiąc się w ogóle o kompatybilność itp. Mało tego, w ten sposób mogę sobie OD TAK załadować dowolny moduł, bibliotekę itp i należycie przetestować. Radzę się zapoznać i samemu ocenić. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 06:28 |