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: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Zamiast komentować kod włóż wysiłek w jego poprawę.
Jeśli kod wymaga komentarza to znaczy, że jest nieczytelny. |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 17 Dołączył: 19.03.2006 Skąd: z kosmosu ;) Ostrzeżenie: (0%)
|
Zamiast komentować kod włóż wysiłek w jego poprawę. Jeśli kod wymaga komentarza to znaczy, że jest nieczytelny. To, że komentuję kod to nie znaczy, że jest nieczytelny. Po prostu opisuję go aby każdy przeglądajcy "był w kontekście" bez "główkowania" co gdzie i jak. -- WebNuLL |
|
|
|
Post
#4
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
To, że komentuję kod to nie znaczy, że jest nieczytelny. Więc jak opiszesz kod, który wymaga dodatkowych instrukcji w postaci komentarza?Po prostu opisuję go aby każdy przeglądajcy "był w kontekście" bez "główkowania" co gdzie i jak. Komentarze są zbędne, jeśli kod jest czytelny i zrozumiały. Jeśli potrzebujesz opisu w postaci tekstu to znaczy, że powinieneś popracować nad kodem. Ten post edytował mike 1.09.2010, 19:44:35 |
|
|
|
Babcia@Stefa [skrypt] "framework" OpenWikiBlog 1.09.2010, 12:50:34
SHiP Nie przeglądałem dokładnie ale jak wrócę z pracy t... 1.09.2010, 14:21:35
Spawnm czemu w index.php masz session_start() ?
query()... 1.09.2010, 14:37:04 
Babcia@Stefa Cytat(Spawnm @ 1.09.2010, 14:37:04 ) ... 1.09.2010, 14:51:12
Zyx Uwagi na szybko:
1. Jaki jest sens używania niest... 1.09.2010, 15:18:26
Babcia@Stefa Cytat(Zyx)Po co Ci w tym i w wielu innych miejscac... 1.09.2010, 15:33:11
erix Cytatklepiesz wszystko od A do Z, tymczasem PHP 5.... 1.09.2010, 16:39:51 
SHiP Cytat(erix @ 1.09.2010, 16:39:51 ) Ta... 1.09.2010, 18:45:15
Babcia@Stefa Cytat(erix)Huh, domniemam że u Ciebie coś w stylu ... 1.09.2010, 17:48:47 
phpion Cytat(Babcia@Stefa @ 1.09.2010, 19:28... 1.09.2010, 18:38:18
Babcia@Stefa Dzięki phpion, zapomniałem o "moim" stan... 1.09.2010, 18:41:55
Babcia@Stefa Dzięki SHiP, poprawione.
Wszelkie poprawki jakie ... 1.09.2010, 18:52:55
erix CytatProszę zatem przeczytać cały post, nie tylko ... 1.09.2010, 19:18:13
Babcia@Stefa Cytat(erix)Coś innego, czyli? Zachęć mnie. Podaj j... 1.09.2010, 19:24:05
SHiP @erix: Podejrzewam, że so = shared object - http:/... 1.09.2010, 19:24:29 
phpion Cytat(SHiP @ 1.09.2010, 20:24:29 ) je... 1.09.2010, 19:44:19
Babcia@Stefa Cytat(SHiP)Po co ta zmienna $APP ?
Nie potra... 1.09.2010, 19:35:42
SHiP @mike: wcale tak nie jest. Niektórzy przyjmują, że... 1.09.2010, 19:48:59
erix CytatNie muszę podawać argumentów, masz kod.
No wł... 1.09.2010, 19:53:14
Zyx Małe info - poszczególne fragmenty mogą być adreso... 1.09.2010, 20:15:23
mike ~SHiP wybacz ale nazwiska sygnatariuszy manifestu ... 1.09.2010, 20:19:45
Babcia@Stefa Cytat(SHiP)Pomijam fakt, że w tym projekcie część ... 1.09.2010, 20:48:05
SHiP @mike: zgadzam się i sądzę, że ilość komentarzy na... 1.09.2010, 22:21:14 
Babcia@Stefa Cytat(SHiP @ 1.09.2010, 22:21:14 ) @m... 2.09.2010, 17:56:11
nospor a ja sie poczepiam trochę bazki
[SQL] pobierz, pla... 2.09.2010, 20:01:08
erix Cytat4) `restrictip` varchar(200) NOT NULL... 2.09.2010, 20:34:07 
Babcia@Stefa Cytat(erix @ 2.09.2010, 19:34:07 ) Ju... 2.09.2010, 21:14:38 
mike Cytat(Babcia@Stefa @ 2.09.2010, 22:14... 3.09.2010, 10:26:00
erix Cytata ile hash ma znaków tego nie liczyłem narazi... 2.09.2010, 21:59:35 ![]() ![]() |
|
Aktualny czas: 10.06.2026 - 11:19 |