Od paru tygodni cierpie nadmiar czasu.. poczytalem troche artykulow (min. na php.pl) i postanowilem napisac
swoja aplikacje. Jednak przed przystapieniem do tego chcialem zrobic jakis prosty framework, ktory
pozwolil by panowac nad kodem niezaleznie od tego jak bardzo by mi sie aplikacja rozrosla. Drugim
zalozeniem bylo wsparcie dostepu do danych nadsylanych z zewnatrz tak aby zminimalizowac ryzyko
stworzenia podatnego kodu na ataki. I tak mniej wiecej powstal PuzzleXFrame.
Dlaczego puzzle ? poniewaz nie korzystam z zadnego systemu szablonow typu smarty a strone buduje sie z puzzli (przynajmiej tak mi sie to kojarzy).
Jest to jeszcze nieoficialna wersja. Aplikacje ktora buduje z wykorzystaniem tego FW jest jeszcze nie skonczona wiec pewne rzeczy moga wyjsc w praniu a kod ulec zmianie w celu poprawy uzytecznosci.
Przydala by sie rowniez solidna dokumentacja.. o ile kod jest jako tako udokumentowany z pewnoscia
mozna zrobic to lepiej.
Okej.. plik mozna pobrac z http://kujawa.info/xframe.zip
Jako, ze FW ma juz wbudowana opcje rejestracji i logowania uzyszkodnikow potrzebna jest baza danych MySQL w ktorej nalezy stworzyc tabele users. W katalogu sql jest zapytanie, ktore mozna wkleic np. do phpMyAdmin w celu stworzenia owej tabeli.
Kolejnym krokiem jest konfiguracja. Odpowiedzialnym za to plikiem jest conf.ini.php. Nalezy w nim ustawic parametry logowania do bazy danych i nazwe bazy gdzie istnieje tabela users.
Aby zapobiec bezposredniemu dostepowi do plikow FW kazda klasa, puzzle, szablony i wszystko inne
includuje rloock.php. Jest to malutki skrypcik ktory sprawdza wywolywany URL jesli bedzie on rozny od index.php - co znaczy, ze ktos prubuje dobrac sie do jednego z plikow naszej applikacji zostanie wyswietlona
oszukancza strona error 404 informujaca, iz dany plik nie istnieje. W zwiazku z tym plik rlookc.php musi byc umieszczony w ogolno dostepnym miejscu - tak aby zewszad mogl byc dolaczony. Takim miejscem jest natoralnie ktorys z katalogow wskazanych w include_path= w pliku php.ini.
Po tych zabiegach mozna sprawdzic strone na www, zarejestrowac sie i zalogowac

Kilka slow o strukturze:
/classes - w tym katalogu przechowuje glowne klasy na kotrych opiera sie FW
/dbmodules - warstwa dostepu do bazy danych. Wszelkie zapytani sql powinny byc wykonywane przez pliki znajdujace sie w tym katalogu.. zachecam do sprawdzenia jak robia to klasy juz istniejace.
/htmpuzzle - katlaog z puzzlami. Na potrzeby FW jest ich kilka min. formularz rejestracji.
/modules - w tym katalogu przechowywane sa moduly. To one wykonuja 'czarna robote' odebrania zapytania z www i przygotowania danych do prezentacji. Z historycznych powodow hazdy modol jest w oddzielnym katalogu ktory musi miec identyczna nazwe z klasa modulu ktora przechowuje. Zamierzam zrezygnowac z tego i przechowywac moduly bez pomocy podkatalogow.
/templates - tutaj znajduje sie ogolny szablon strony. jest on nijako ramka w ktorej uklada sie puzelki. Jeden wglad do pliku z szablonem i wszystko stanie sie jasne.
Wszystko zaczyna sie w index.php..
Od zmiennej ?Action= zalezy jaki modul zostanie grzecznie poproszony i realizacje zapytania. Jesli takowy modul nie istnieje badz action nie zostal w ogole ustawiony wybrany zostanie modul domyslny. Na domyslnej konfiguracji nazywa sie on def.
Po wybraniu modulu jest on dolaczany, tworzona jest jego instancia i wywolywana metoda doAction.
Kazdy modul dziedziczy po klasie xmodule z /classes. Oraz wywoluje w konstruktorze metode rodzica xmodule. Warto zapoznac sie z klasa xmodule ma ona kilka kluczowych wlasciwosci z ktorych korzystaja moduly, min. :
- zapewnia dostep do bazy danych
- pamieta jaki adres byl wywolay poprzednio. To bardzo przydatna funkcja. Zalozmy ze uzytkownik jest w miejscu X na naszej stronie np. adres/?s=10&w=12&z=3


Dziekuje serdecznie jesli kto kolwiek dobrna do konca tego posta! Z pewnoscia mozna by bylo jeszcze wiele napisac ale to wystarczy do ogolnego rozejrzenia sie po moim kodzie. Mam nadzieje, ze moze sie to komus przyda, zainspiruje lub... byc moze okaze sie wzorcowym przykladem jak nie powinien wygladac FW (tego akurat bym nie chcial).
ps. do e-maila podanego w kodzie jeszcze dlugo nie bede mial dostepu wiec wszelkie pytania, opinie, (bluzgi) prosze kierowac przez forum.
Pozdrawiam.