![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Witam, ostatnio na własne potrzeby zacząłem pisać coś w czym będę się czuć swobodnie pisząc kolejne aplikacje internetowe, to tak zwany "szkielet".
Uwaga, uwaga, w celu rozwiania pewnych uwag i wątpliwości pojęcie framework zostało objęte cudzysłowiem ponieważ jest to framework po mojemu, jeżeli komuś się nie podoba to nie musi używać i nie, nie będę patrzeć na Zend Framework czy inne frameworki - ten jest inny! Jednak jestem zwolennikiem Wolnego i Otwartego Oprogramowania dlatego postanowiłem, że podzielę się Swoją pracą z innymi ludźmi. Hosting projektu zapewnia github.com, niestety muszę przyznać, że to mój pierwszy projekt hostowany na GIT i mam nadzieję, że nic nie zepsuje po drodzę ( jestem ostrożny ) (IMG:style_emoticons/default/smile.gif) === TU TNIJ === Przejdę do rzeczy, konkrety, konkrety! No i oczywiście dodam link do repozytorium projektu: http://github.com/webnull/OpenWikiBlog Jądro Całość jest zbudowana w oparciu o jądro, a reszta to tylko moduły. Jądro może nie waży zbyt wiele, ale jest na prawdę funkcjonalne. Cechy jądra:
"Module On Demand" Wystarczy odwołać się do modułu który nie został załadowany aby został załadowany (IMG:style_emoticons/default/smile.gif) Kod $Kernel -> module -> moduleFunction ( Arguments ); Powyższy przykład w razie gdy moduł "module" nie istnieje załaduje moduł oraz odwoła się do jego funkcji o zwróci porządaną wartość. Skrypty startowe
Odnośnie skryptów startowych, na wiki jeszcze niema nic opisane ale obiecuję, że wkrótce opiszę każdy szczegół konfiguracji razem z "kolorowymi" przykładami ( gotowcami ) w miarę prosto i zwięźle. Obsługa domyślnych modułów Moduł może zdefiniować Siebie jako domyślny do wykonywania danej czynności, np. moduł MojErrorHandler może wywołać $Kernel->setAsDefault('MojErrorHandler', 'error_handler' ); Po zdefiniowaniu domyślnego modułu np. Error Handlera inne moduły będą go używać w taki sposób: Kod $Kernel->error_handler->log('asd'); "hooking" ( zaczep ) - czyli jak zmodyfikować prywatną zmienną wewnątrz funkcji innej klasy Od niedawna ( dwa ostatnie commity ) dodałem moduł libhooks ( nazwa wywoławcza: hooks ). Moduł pozwala zmodyfikować prywatną zmienną wewnątrz funkcji innego modułu jeżeli ten moduł na to pozwoli. Jak to działa w praktyce? Moduł który chce zmodyfikować dane innego modułu musi być załadowany najpierw. Definiujemy zaczep o nazwie np. "moj_zaczep" podając dodatkowo nazwę klasy i funkcji która ma być wywołana do zmodyfikowania danych przekazanych z zaczepu. Definicji dokonujemy w module który startuje najpierw. Teraz startujemy moduł który posiada dane do zmodyfikowania przez inny moduł, wykonujemy zaczep wrzucając do niego dane które przejmie drugi moduł i zwróci "w poprawionej wersji". Teraz prosty przykład:
Jak powstają nowe funkcje oraz moduły Kernela? Oczywiście buduję własne strony na tym frameworku i jeżeli coś stoi na drodze to poprawiam to lub dodaję nową funkcjonalność i publikuję na bieżąco na githubie. Zawsze jednak jeżeli jesteś chętny/chętna do współpracy to na prawdę zapraszam, z chęcią przejrzę każdą poprawkę i dodam do projektu. Niestety nie posiadam teraz żadnego zewnętrznego hostingu, dlatego strona testowa ( mój warsztat ) nie zawsze jest dostępny, ale wtedy kiedy będzie to zapraszam: http://194.29.181.186/tuxplace-cube/ To jedna ze stron która działa na frameworku. Zapraszam do ocen, oraz do pomocy przy pisaniu kodu (wnoszeniu poprawek jak i funkcjonalności nowej) (IMG:style_emoticons/default/smile.gif) PS. OpenWikiBlog dlatego, że projekt miał być małym mechanizmem podobnym do bloga - jedynie tworzenie i edytowanie podstron HTML razem z panelem administracyjnym ale się rozrosło (IMG:style_emoticons/default/smile.gif) -- WebNuLL Ten post edytował Babcia@Stefa 1.09.2010, 13:31:44 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%) ![]() ![]() |
Cytat(Zyx) Po co Ci w tym i w wielu innych miejscach referencje? Ponieważ oszczędzam każdy bajt pamięci, i nie potrzebuję powielać tablic jak mogę odwołać się do ich pamieci. Cytat(Zyx) gdyż taki projekt "uniwersalnego portu dla systemów szablonów" już istnieje i ma się całkiem dobrze Ale ten projekt nie jest modułem do mojego frameworka, tak więc nie mogę go swobodnie przyczepić i z niego korzystać - PHP nie oferuje takich możliwości. Gdybym chciał używać tego uniwersalnego portu dla wszystkich szablonów to musiałbym regularnie go pobierać z każdą nową wersją i modyfikować tak aby pasował u mnie. Cytat(Zyx) 4. core/modules/hardened.so.php - na co takie cuda? Magia przy parsowaniu danych wejściowych na dłuższą metę to jedno wielkie zło. Ten moduł jest domyślnie wyłączony, to jedynie ciekawostka - jeżeli ktoś chce to może używać takiego modułu. Cytat(Zyx) 6. Wynajdowanie kół od zera także w kilku innych miejscach. Przykład to system językowy - klepiesz wszystko od A do Z, tymczasem PHP 5.3 wprowadza bardzo fajne unikodowe klasy typu MessageFormatter, które dają tłumaczom większą precyzję? To moja standardowa biblioteka tłumacza. Zauważ, że tą bibliotekę w bardzo prosty sposób można zastąpić w przyszłości inną biblioteką która będzie używać np. MessageFormatter, to nie problem. MessageFormatter mogę wprowadzić do projektu jak będzie można, jest to świetna rzecz. Cytat(Zyx) 5. Bałagan w nazewnictwie funkcji, metod, klas... Dlaczego tak uważasz? Jeżeli to faktycznie prawda ( ja tego nie zauważam ) to myślę, że porządna dokumentacja to naprawi. Cytat(Zyx) Jaki jest sens używania niestandardowego nazewnictwa Wybacz, po prostu przyznaję się, że NIE ZNAM "STANDARDOWEGO NAZEWNICTWA". -- WebNuLL Ten post edytował Babcia@Stefa 1.09.2010, 15:35:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 11:07 |