Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ala MVC framework, jak usprawnić, poprawić itp
kangurmk
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.02.2006

Ostrzeżenie: (0%)
-----


Na laborkach z programowania dostaliśmy za zadanie stworzyć stronę internetową oparta o wzorzec MVC, postanowiłem nie korzystać z dostępnych powszechnie frameworków, tylko napisać własny prosty ala framework oparty na idei wzorca MVC (przy okazji ucząc się dogłębniej idei OPP i wzorców projektowych). Ponieważ ten framework nie jest jeszcze kompletny i mimo że będzie dalej rozbudowywany chciałem zapytać Was o pomysły, poprawki odnosie jego rozwoju.
Podstawowe informacje o budowie tego frameworka:
- zastosowanie mod_rewrite
- przekazywanie przez url modeli i akcji (wzorowane na ZendFramework)
- wykorzystanie bibliotek xajax i savant
Na razie brak dokładnej implementacji błędów i zabezpieczeń przed XSS, SQLInjection i innymi ...Injection ;] (częściowe są)
Kod frameworka wraz z przykładowymi kontrolerami, modelami i widokami możecie ściągnąć z http://rapidshare.com/files/168371642/miko.rar lub http://www.ppiw.ovh.org/miko.rar

Ten post edytował kangurmk 29.11.2008, 10:45:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Niewygodne i nieco mylące tworzenie zmiennych w akcji. Uzywasz vars, a dalej jest assign. Powinno wystarczyc
  1. <?php
  2. $this->vars->nazwa=1;
  3. //lub
  4. $this->nazwa='cos'
  5. ?>

Potem cały kontener z danymi jest ekstraktowany automatycznie w widoku

  1. <?php
  2. if(isset($this->vars['logOut']))
  3.        {
  4.            if($this->vars['logOut'] == 1){
  5.                $this->vars['auth']->LogOut();
  6.            }
  7.        }
  8. ?>

no nie wiem, ale wydaje mi się, że
  1. <?php
  2. $this->context->user->logout();
  3. ?>

Byłoby lepszą implementacją niż dostęp przez tablicę, choć jeszcze lepsze by było, gdyby istniała osobna akcja wylogowująca użytkownika.

Pozdrawiam
Go to the top of the page
+Quote Post
kangurmk
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.02.2006

Ostrzeżenie: (0%)
-----


Cytat(Cysiaczek @ 29.11.2008, 13:38:35 ) *
Niewygodne i nieco mylące tworzenie zmiennych w akcji. Uzywasz vars, a dalej jest assign. Powinno wystarczyc
  1. <?php
  2. $this->vars->nazwa=1;
  3. //lub
  4. $this->nazwa='cos'
  5. ?>

vars przechowuje zmienne przekazane metodą GET i zmienne dodane funkcją AddMKObj klasy MKBootStrap, a metoda assign służy do kopiowania zmiennej do szablonu (jest to opakowanie funkcji assign z systemu szablonów savant), czyli zmienne przekazane metodą assign będzie można używać w kodzie widoku (w szablonie).
Ogólnie koncepcja polega na tym że w pliku index.php tworzony jest obiekt klasy MKBootStrap, który domyślnie tworzy obiekty klasy savant i xajax + zmienne z $_GET i dodaje je to tablicy vars (dzieje się to w konstruktorze klasy MKBootStrap). Obiekt tej klasy tworzymy tak:
Kod
$boot = MKBootStrap::getInstance($load->GetAppDir());

Następnie możemy, utworzyć obiekty innych klas zawartych w folderze lib, np obiekt klasy Auth jeśli wymagamy aby nasza aplikacja obsługiwała logowanie użytkowników (na razie w lib jest tylko jedna klasa Auth którą możemy a nie musimy dodawać, w przyszłości pewnie powstanie więcej, np do rejestracji użytkowników, wysyłania e-maili itp)
Kod
$auth = MKAuth::getInstance();
$boot->AddMKObj('auth', $auth);


i teraz w każdym kontrolerze mamy dostęp do obiektu auth poprzez zmienną $this->vars.

Cytat(Cysiaczek @ 29.11.2008, 13:38:35 ) *
Potem cały kontener z danymi jest ekstraktowany automatycznie w widoku

  1. <?php
  2. if(isset($this->vars['logOut']))
  3.        {
  4.            if($this->vars['logOut'] == 1){
  5.                $this->vars['auth']->LogOut();
  6.            }
  7.        }
  8. ?>


no nie wiem, ale wydaje mi się, że
  1. <?php
  2. $this->context->user->logout();
  3. ?>

Byłoby lepszą implementacją niż dostęp przez tablicę, choć jeszcze lepsze by było, gdyby istniała osobna akcja wylogowująca użytkownika.

Pozdrawiam


Co do osobnej akcji wylogowującej to dobry pomysł, ale to już kwestia gustu osoby piszącej dany kontroler.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 14:59