![]() |
![]() |
![]()
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: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Proszę zatem przeczytać cały post, nie tylko fragmenty. W dolnej częsci postu *w komentarzu konfiguracji* jest pokazany przykład zastosowania. Nie jest to jakaś zaskakująca funkcja w PHP, jednak jest zaskakująca w tym "frameworku" ze względu na jego budowę. ~mike ma rację - popatrz np. na jQuery - po kilkumiesięcznej przerwie w klepaniu kodu jestem w stanie napisać wszystko bezbłędnie bez zaglądania dokumentacji. Po co coś niepotrzebnie komplikować...? Cytat Nazywając "Jądro" Kernel, a pluginy modułami wprowadzam "styl nazw Uniksowych" do mojego projektu. A nie wystarczy rozdzielić na katalogi...? Ile bibliotek PHP widziałem, to jeszcze ani razu takiej konwencji... Podejrzewam, że nie tylko ja zadam pytanie WTF? na widok .so.php. Cytat Co do bazy danych, to jak widzisz - łączę się z DB każdorazowo. Myślę, że wprowadzenie jakiegoś cache nie będzie wcale problemem, jednak z tym jeszcze poczekam. Na co chcesz czekać? To powinno być napisane OD RAZU. Potem będziesz tylko pisał na kolanie, bo trzeba coś wprowadzić. Cytat Wybierając mój "framework" wybiera się coś innego niż reszta frameworków, lecz bardzo chętnie przyjrzę się konkretnym standardom i jeżeli są warte zaimplementowania to z pewnością zaimplementuję Coś innego, czyli? Zachęć mnie. Podaj jakieś argumenty, dla których WARTO korzystać z Twojego fw. Nie chodzi mi o zawartość pierwszego Twojego posta. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 20:52 |