Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [framework] PuzzleXFrame
Forum PHP.pl > Inne > Oceny
Luciano
Witam wszystkich,

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 smile.gif

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 smile.gif Powiedzmy, ze tym miejscem jest wglad w jakies dane, ktore mozna rowniez dodawac z tego miejsca. Formularz jest wysylany do modulu odpowiedzialnego za zarzadzanie danymi (jest pod innym adresem - Y). Po dodaniu danych, warto by bylu uzytkownika odeslac w to samo miejsce. Jako, ze kazdy modul dziedziczy po xmodule wystarczy wpisac $this->goToLastURL(); a uzytkownik zostanie z powrotem przekierowany na swoj adres X. Takie rozwiazanie jest zastosowane po logowaniu (modul users.class.php). Niestety nie jestem pewny w 100% czy nierozwazne uzycie tej funkcji moze wprowadzic przegladarke w smiertelna petle przekierowan.. dlatego zalecam ostroznosc smile.gif

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.
Turgon
Marnie. Przejrzałem powierzchownie kod i katastrofa. Kto używa $GLOBALS['HTTP_POST_VARS'] . Framework oferuje mało modułów. Widzę kilka dziwnych niepotrzebnych rzeczy min. automatyczne dołącznie modelu do kontrolera.
Widzę, że piszesz w PHPEclipse, więc wykorzystaj narzędzia w nim zawarte min. debugger.
Dziwi mnie to, że piszesz pod PHP4.
Luciano
Sam nie wiem czemu wpisalem globals w kazdym razie to latwo zmienialne smile.gif
Co do debugera.. to w jakims kontekscie to powiedziales (prosze rozwin).
Dlaczego PHP4 ? wciaz widze na wielu serverach php4, wiele aplikacji nadal powstaje w czworce.
Nie uwazam aby byla lepsza od 5 i nie mam konserwatywnych pogladow. Zreszta
z punktu widzenia mojego kodu wersia wiele nie zmieni, co najwyzej zadeklaruje sobie publiczne
prywatne klasy i zrobie kilka interfacow (chyba, ze sie myle).
Malo modulow poniewaz z zalozenia mialo byc to bardzo proste.
A co do automatycznego ladowania to IMHO wlasnie o to chodzilo plus mniej wiecej takie rozwiazanie
bylo pokazane w jakims artykule na tym ze wortalu.
Turgon
Więc tak Luciano tj. nie zdrowe ponieważ ja np. chce dołączyć 5 różnych modeli !? I co wtedy ? klapa... Dlatego ja rozwiąząłem to funkcją initialize() bez parametrów służącą w kontrolerze do tworzenia instancji potrzebnych modułów lub wykonania czegoś tuż przed wywołaniem właściwej akcji.
A co do wersji php. php 4 powinno odejść. Ludzie nie odchodzą od niego, ponieważ wciąż pisze się pod nią...
Luciano
Osobiscie lubie PHP5 przede wszystkim za obsluge wyjatkow i oczywiste OO. Sprawa z 4 jest troche zawila wiec nie bede jej tlumaczyl (w kazdym razie wolal bym robic w 5).
To co mowiles u modulach jak najbardziej jest uzasadnione, rozwiazanie jedno modulowe faktycznie moze wprowadzic w pulapke zbednego dublowania kodu przez co niestety trzeba przemyslec strukture aplikacji z tym jedno modulowym rozwiazaniem.
A sprawa debugera questionmark.gif co miales na mysli ? Przyznam, ze niedawno kolega powiedzial mi w ogole o jego istnieniu (niedawno na eclipse sie przenioslem z surowego edytora z kolorowym syntaxem) i mile zaskoczyla mnie jego funkcionalnosc dlatego sie tak dopytuje.

Pozdrawiam.
Turgon
Chodzi mi o debugowanie poprawności kodu. Zacznij też stosować się do metodyki XP (eXtreme Programming). Stosuj refactoring kodu. Wywal to ładowanie, bo po co, tylko marnuje zasoby...
Spróbuj też przeglądnąć inne frameworki np. Symfony, Prado, Zenda...
Luciano
OKi, dzieki za zainteresowanie. Z pewnoscia zrobie uzytek z twoich porad.
Prph
Przejrzalem pobierznie kod. $_GLOBALS zdecydowanie powinienes usunac. W zasadzie do Twojego FW wystarcza stale. Ewentualnie konfig w postaci tablicy, ktora zaladuje jakis obiekt Singletone, z ktorego bedziesz je mogl wydobywac.

Szablony: Uzywaj ich wszedzie. A ty ich uzywasz i nie winksmiley.jpg W php formatujesz kod - nie wyglada to ladnie. Zwyczajnie dodawaj zmienne do szablonu i formatuj to w szablonach.

@Turgon, mowisz, ze oferuje malo modulow. Przeciez kolega napisal, ze zaczyna. Poza tym - framework ma zapewniac sterowanie. Reszta to dodatki winksmiley.jpg Zapewne kolega z biegiem czasu skompletuje troche narzedzi przydatnych w pisaniu kolejnych aplikacji. Poza tym - chyba wyraznie powiedzial, ze to JEGO FW, DLA NIEGO. Ja tez Rapide napisalem dla siebie. Zamiescilem go na forum, bo moze znajdzie sie osoba, ktora z niego skorzysta w celach edukacyjnych.

Pozdrawiam, Adrian.
Turgon
Cytat(Prph @ 18.10.2006, 11:11:46 ) *
@Turgon, mowisz, ze oferuje malo modulow. Przeciez kolega napisal, ze zaczyna. Poza tym - framework ma zapewniac sterowanie. Reszta to dodatki winksmiley.jpg Zapewne kolega z biegiem czasu skompletuje troche narzedzi przydatnych w pisaniu kolejnych aplikacji. Poza tym - chyba wyraznie powiedzial, ze to JEGO FW, DLA NIEGO. Ja tez Rapide napisalem dla siebie. Zamiescilem go na forum, bo moze znajdzie sie osoba, ktora z niego skorzysta w celach edukacyjnych.

Dla mnie ważne jest wiele opcji tego sterowania, bo jak obecnie tj. cieniasko.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.