Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC] Ładowanie modelu
PiotrekM
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


Witam,
piszę mały silnik dla swojej aplikacji. Chcę go oprzeć o wzorzec MVC. Chciałbym zrobić ładowanie modelu podobnie jak w kohanie, tylko jest jeden problem.
Mam klase loader, metode model.
  1. public function model( $name) {
  2.  
  3. //require
  4. require MODELS_PATH . $name . '.php';
  5. $this -> $name = new $name;
  6. }

gdy w kontrolerze dziedzicze klase loader, to przy tworzeniu modelu pole tworzy się w klasie loader, więc z kontrolera nie mam bezpośredniego dostępu $this -> pole.
Jak można by to inaczej zrobić? Jestem otwarty na propozycje (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PiotrekM
post
Post #2





Grupa: Zarejestrowani
Postów: 130
Pomógł: 6
Dołączył: 20.12.2009

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


Dzięki staruszku, w nocy się nie domyślam niczego także wybacz. Pewnie, ze działa.
Go to the top of the page
+Quote Post
darko
post
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Cytat(PiotrekM @ 21.02.2010, 00:50:57 ) *
Dzięki staruszku, w nocy się nie domyślam niczego także wybacz. Pewnie, ze działa.

Staruszku? No dzięki (IMG:style_emoticons/default/winksmiley.jpg)
W ogóle proponuję coś takiego:

  1. class test {
  2. public $test = 'test';
  3. public function Test() {
  4. return 'test method';
  5. }
  6. }
  7. class test2 {
  8. public $test = 'test2';
  9. public function Test2() {
  10. return 'test method2';
  11. }
  12. }
  13. /////////////
  14. //loader on controller
  15. class loader {
  16.  
  17. /**
  18. * method view
  19. *
  20. */
  21.  
  22. public function view( $file, $array = true) {
  23.  
  24.  
  25. //if second argument is array
  26. if( is_array( $array)) {
  27.  
  28. foreach( $array as $item => $val) {
  29.  
  30. //this is vars
  31. $$item = $val;
  32. }
  33. }
  34.  
  35. //display view
  36. include VIEWS_PATH . $file . '.php';
  37. }
  38.  
  39. /**
  40. * method model
  41. *
  42. */
  43.  
  44. public function model( $name) {
  45.  
  46. //require
  47. require MODELS_PATH . '.' . $name . '.php';
  48. //$this -> $name = new $name;
  49. return new $name;
  50. }
  51. }
  52.  
  53. class controller {
  54.  
  55. private $_models = array();
  56. protected $load = null;
  57.  
  58. public function __construct() {
  59.  
  60. $this -> load = new loader;
  61. $this->_loadModels(array('test','test2'));
  62. echo $this->test->Test();
  63. echo $this->test2->Test2();
  64. }
  65.  
  66. public function __set($prop_name, $prop_value) {
  67. $this->_models[$prop_name] = $prop_value;
  68. //$prop_name = $prop_value;
  69. }
  70.  
  71. public function __get($model_name) {
  72. return $this->_models[$model_name];
  73. }
  74.  
  75. private function _loadModels(array $models) {
  76. foreach($models as $m) {
  77. $this->_models[$m] = $this->load->model($m);
  78. }
  79. }
  80. }
  81.  
  82. $c = new controller();
Go to the top of the page
+Quote Post

Posty w temacie
- PiotrekM   [MVC] Ładowanie modelu   20.02.2010, 22:47:18
- - darko   Jeśli dobrze zrozumiałem, to chcesz wywołać metodę...   20.02.2010, 23:01:41
- - PiotrekM   sory, troche w błąd wprowadziłem. nie chce dziedzi...   20.02.2010, 23:06:38
- - darko   Magiczne setter i getter powinny wystarczyć. ps. ...   20.02.2010, 23:14:07
- - PiotrekM   nie wiem jak to można zastosować, szczerze mówiąc ...   20.02.2010, 23:20:02
- - darko   http://www.php.net/manual/en/language.oop5...loadi...   20.02.2010, 23:21:26
- - PiotrekM   nie rozumiem jak chcesz to niby zastosować?   20.02.2010, 23:27:36
|- - darko   Cytat(PiotrekM @ 20.02.2010, 23:27:36...   20.02.2010, 23:52:24
- - PiotrekM   [PHP] pobierz, plaintext <?php //loader on cont...   21.02.2010, 00:02:54
- - darko   [PHP] pobierz, plaintext class test { public ...   21.02.2010, 00:17:37
- - PiotrekM   nie działa: Notice: Undefined property: controlle...   21.02.2010, 00:26:18
- - darko   Zedytowałem swojego poprzedniego posta zmieniając ...   21.02.2010, 00:27:28
- - PiotrekM   działa, ale nie tak jak powinno. Chciałem przy ład...   21.02.2010, 00:33:30
|- - darko   Cytat(PiotrekM @ 21.02.2010, 00:33:30...   21.02.2010, 00:39:15
- - PiotrekM   sęk w tym, że chce się do tego zwracać w konstrukt...   21.02.2010, 00:41:56
- - darko   Myślałem, że już się sam domyślisz o co chodzi: [...   21.02.2010, 00:44:49
- - PiotrekM   Dzięki staruszku, w nocy się nie domyślam niczego ...   21.02.2010, 00:50:57
|- - darko   Cytat(PiotrekM @ 21.02.2010, 00:50:57...   21.02.2010, 00:54:40
- - PiotrekM   czekaj, czekaj, bo o jednej rzeczy zapomnieliśmy ...   21.02.2010, 00:58:50
- - darko   O niczym nie zapomnieliśmy zerknij na metodę _load...   21.02.2010, 01:01:53
- - PiotrekM   otóż to, chciałem ładować $this -> load -...   21.02.2010, 01:06:25
- - starach   A nie lepiej przekazywać od razu instancje klas mo...   21.02.2010, 16:29:22
- - mls   Zadam może niewłaściwe pytanie, ale... dlaczego po...   27.02.2010, 00:05:42


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 - 10:08