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
kangurmk
post
Post #2





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

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


Czy ten nowy obiekt MKVarsTransver (wyżej w postach nazywa się vars) może wyglądać tak:
  1. <?php
  2. class MKVarsTransver {
  3.    private $vars = array();
  4.    public function __set($name, $value)
  5.    {
  6.         $this->vars[$name] = $value;
  7.    }
  8.     public function __get($name)
  9.    {
  10.         return $this->vars[$name];
  11.    }
  12. $
  13. ?>

Czy przydało by się dodać jakieś inne metody do tej klasy?
Czy warto zastosować wzorzec singleton to tego obiektu? Chociaż drugiej strony chyba sie nie utworzy więcej niż raz, jeśli tworzymy go w metodzie obiektu który jest singletonem, dokładniej w konstruktorze klasy MKBootStrap. A może zamiast tworzyć nowy obiekt dodać te metody do klasy MKActionController?


---
dodałem te metody magiczne do klasy MKActionController
  1. <?php
  2.  
  3. abstract class MKActionController
  4. {
  5.    
  6.    protected $model;
  7.  protected $view;
  8.  protected $vars;
  9.  private $model_file_name;
  10.  private $model_class_name;
  11.  
  12.    function __construct($vars)
  13.   {
  14.         $this->model_file_name = '../models/'.$vars['controller'].'Model.php';
  15.         if(file_exists($this->model_file_name))
  16.        {
  17.            require_once($this->model_file_name);
  18.              $this->model_class_name = $vars['controller'].'Model';
  19.                $this->model = new $this->model_class_name();
  20.                $this->vars = $vars;
  21.                $this->vars['presentation']->addPath('template','../views/');
  22.            }
  23.   }
  24.  
  25.  public function __set($name, $value)
  26.  {
  27.        $this->vars[$name] = $value;
  28.  }
  29.  public function __get($name)
  30.  {
  31.      return $this->vars[$name];
  32.  }
  33.  
  34.  function getView()
  35.  {
  36.    return $this->view;
  37.  }
  38. }
  39. ?>


zmieniłem kod w kontrolerze IndexController na:
  1. <?php
  2. if(isset($this->vars['logOut']))
  3.        {
  4.            if($this->vars['logOut'] == 1){
  5.                $this->vars['auth']->LogOut();
  6.            }
  7.        }
  8. ?>

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


i wywala mi błąd

Notice: Trying to get property of non-object in C:\xampp\htdocs\mvc\branches\miko\application\controllers\IndexController.php on line 9

(w kodzie wyżej oznacza to linię 5)

Ten post edytował kangurmk 29.11.2008, 17:02:16
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: 30.12.2025 - 05:48