Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MVC] Mój "framework"
Forum PHP.pl > Inne > Oceny
aras785
Witam. Dla edukacji tworze sobie kod. Proszę o ocenę i przyznam, że mam dużo problemów z routingiem...


Obecnie zrobiłem tak, że Config/router.php deklaruje trasy np:

  1. <?php
  2. return array(
  3. //routing dla strony 404
  4. '/error'=>'/error/index',
  5. //dla album
  6. '/albumy'=>'/index/index',
  7. '/albumy/dodaj'=>'/index/add',
  8. '/albumy/edit/(\d+)=>'index/edit/id/$1',
  9. );

Klucz to docelowy url z którego pobieramy kontroler, akcję itd., a wartość to stand. ścieżka czyli:

Kod
/controller/action/id/2/page/4/sord/desc


Do tego mam zrobioną funkcję w klasie Request -> url(array) np:
  1. $this->url(array('controller'=>'index','action'=>'edit','id'=>5)); //wyświetli /albumy/edit/5


Jeśli w config nie znajdzie się odpowiedni wzorzec to wyświetli: /index/edit/id/5


Wiem, że wygląda to niezbyt ciekawie ale to co udało mi się wyskrobać. Proszę o podpowiedzi odnośnie routera. Chodzi mi o obustronny kierunek (odbieranie, tworzenie). Z góry dziękuje i pozdrawiam smile.gif


I link: https://github.com/aras123/MiniFramework

Oraz podgląd: http://aras123.p.ht/

questionmark.gif smile.gif

...
nospor
Dodaj -> pole nazwa artysty i wpisz:
"> Bu

No zeby tak banalne bledy robic....

przenosze

Model nie powienien dziedziczyc po klasie mysql
aras785
Filtrowanie i walidacja jeszcze przede mną (jest pseudo filtr haha.gif). Znasz jakąś prostą klasę która ładnie by to ogarnęła?

Masz rację z tym dziedziczeniem w modelu, dzięki.
nospor
Cytat
Znasz jakąś prostą klasę która ładnie by to ogarnęła?
Tja.... htmlspiecialchars() przed wyswietlaniem danych.
aras785
No tak, ale chodzi mi bardziej o klasę która wytnie wszystkie "złe" znaczki smile.gif
nospor
Zawsze cos przejdzie, wiec dla pewnosci uzywaj htmlspiecialchars.
No i odkiedy cudzyslow to zly znak? Owszem, w niektorych polach cudzyslow z definicji nie przystoi, ale sam w sobie cudzyslow to znak jak kazdy inny i nalezy umiec go poprawnie i bezpiecznie wyswietlac.
ShadowD
Ja tylko polecę byś popatrzył sobie w kod phalcon framework - w dokumentację.

Ogólnie phalcon to taki bardzo prosty framework z Dependency Injection, to taka klasa w którą wpychasz wszystkie servisy jakie ma Twoja aplikacja.

Jeśli chcesz stworzyć mysql to robisz coś w styli:
  1. $di = new DependencyInjection();
  2.  
  3. $di->set('routing', function(){
  4. $routing = new fw\routing();
  5. $routing->add('/test', array(
  6. 'controller' => 'test'
  7. ))
  8.  
  9. return $routing;
  10. });


I tak dodajesz mysql itd dzięki czemu do medleu przekazujesz tylko di, a w nim masz dostęp do wszystkich zasobów zkonfigurowanych wcześniej. ;-) Jeśli chodzi o kontroler to też:
$controler->setDi($di);

W klasie kontrolera masz obsługę tylko poprzez __get() dzięki czemu odwoływanie się do widoku jest banalne $this->view, gdzie view to jakiś tam serwis skonfigurowany w apce wcześniej. ;-)
aniolekx
Zobacz taki maly framework i klase router jak jest napisana:
http://phpixie.com/

Tutaj kolejny przyklad ciekawego routera:
http://we-love-php.blogspot.co.uk/2012/07/...l-and-fast.html

Mozesz pobawic sie takze programem ab (jest dodawany do apache), i sprawdzic ile requertow twoj router jest w stanie przerobic smile.gif

Warto takze popatrzec na inne frameworki.
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.