![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 1 Dołączył: 26.07.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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. -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
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. -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 1 Dołączył: 26.07.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Sam nie wiem czemu wpisalem globals w kazdym razie to latwo zmienialne
![]() 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. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
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ą... Ten post edytował Turgon 17.10.2006, 16:22:30 -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 1 Dołączył: 26.07.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() Pozdrawiam. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
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... -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 102 Pomógł: 1 Dołączył: 26.07.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
OKi, dzieki za zainteresowanie. Z pewnoscia zrobie uzytek z twoich porad.
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() @Turgon, mowisz, ze oferuje malo modulow. Przeciez kolega napisal, ze zaczyna. Poza tym - framework ma zapewniac sterowanie. Reszta to dodatki ![]() Pozdrawiam, Adrian. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
@Turgon, mowisz, ze oferuje malo modulow. Przeciez kolega napisal, ze zaczyna. Poza tym - framework ma zapewniac sterowanie. Reszta to dodatki ![]() Dla mnie ważne jest wiele opcji tego sterowania, bo jak obecnie tj. cieniasko. -------------------- Jah Music Is On My Mind !
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:46 |