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.
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) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Jeśli dobrze zrozumiałem, to chcesz wywołać metodę klasy bazowej w klasie wyprowadzonej, rozwiązanie jest proste: parent
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
sory, troche w błąd wprowadziłem. nie chce dziedziczyć klasy, tylko w kontrolerze ją wywołać $this -> load = new loader;
i potem ładowac modele $this -> load -> model('model'); i chce by mi pole modelu tworzyło w kontrolerze, a nie w loaderze |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Magiczne setter i getter powinny wystarczyć.
ps. nie wiem, jak to dokładnie wygląda w Kohanie. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
nie wiem jak to można zastosować, szczerze mówiąc pierwszy raz sie z takim czymś spotykam. Jakaś mała podpowiedź?
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
http://www.php.net/manual/en/language.oop5...loading.members
Pokaż jeszcze swój kod, bo nie mam pewności czy rozmawiamy o tym samym. Ten post edytował darko 20.02.2010, 23:26:10 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
nie rozumiem jak chcesz to niby zastosować?
|
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
nie rozumiem jak chcesz to niby zastosować? Właśnie dlatego prosiłem o pokazanie kodu, bo nie mam pewności czy się rozumiemy. Zastosowanie magicznego settera w kontrolerze można byłoby połączyć z tablicą przechowującą modele, wystarczyłoby zwracać instancę tworzonego modelu w metodzie load klasy loader (jeśli Cię dobrze zrozumiałem). Zresztą zerknij jeszcze tu |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
Ten post edytował PiotrekM 21.02.2010, 00:03:10 |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Ten post edytował darko 21.02.2010, 00:28:37 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
nie działa:
Notice: Undefined property: controller::$test in C:\xampp\htdocs\tomato\system\libraries\controller.php on line 68 Fatal error: Call to a member function oki() on a non-object in C:\xampp\htdocs\tomato\system\libraries\controller.php on line 59 Kod napisz metodę do przechowywania modeli wewnątrz kontrolera, po co się tak męczyć, albo lepiej: $this->_models[] = $this -> load -> model('test'); nie ma jak. napisze w konstruktorze, to zanim dodam model to mi już tablice spróbuje zapełni. dam w destruktorze, to już mi będą dane zbędne :/ |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Zedytowałem swojego poprzedniego posta zmieniając w ogóle koncepcję.
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
działa, ale nie tak jak powinno. Chciałem przy ładowaniu modelu stworzyć też pole dla niego :/
|
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
działa, ale nie tak jak powinno. Chciałem przy ładowaniu modelu stworzyć też pole dla niego :/ Cieszę się, że udało się dobrnąć do tego stwierdzenia (IMG:style_emoticons/default/smile.gif) W tym momencie należałoby zaimplementować proponowane przeze mnie magiczne metody: setter i getter, np.
Ten post edytował darko 21.02.2010, 00:41:41 |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
sęk w tym, że chce się do tego zwracać w konstruktorze w klasie, a nie poza nią.
echo $this -> test -> oki(); nie działa |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
Myślałem, że już się sam domyślisz o co chodzi:
Ten post edytował darko 21.02.2010, 00:46:48 |
|
|
|
Post
#17
|
|
|
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.
|
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
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:
|
|
|
|
Post
#19
|
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 6 Dołączył: 20.12.2009 Ostrzeżenie: (0%)
|
czekaj, czekaj, bo o jednej rzeczy zapomnieliśmy (IMG:style_emoticons/default/biggrin.gif)
jak zrobić, bym nie musiał dawać tego $this ->_models['test']. bo jak chce operować na metodach klasy, to mode dać load model i niech mi tworzy pole w klasie, co nie? :] |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%)
|
O niczym nie zapomnieliśmy zerknij na metodę _loadModels oraz konstruktor (IMG:style_emoticons/default/winksmiley.jpg) Tylko tak dla porządku to powinno to zostać przerzucone do samego loadera dla utrzymania jakichś podstaw logiki, no ale to już sobie poradzisz i posprzątasz w tych klasach. A tak już zupełnie profesjonalnie to powinien być dobrze napisany autoloader z jakimiś przejrzystymi regułami, który umożliwiałby lazy loading modeli.
Ten post edytował darko 21.02.2010, 01:06:55 |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 00:22 |