![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Właśnie ponad 2 godziny spędziłem na odpluskwianiu mojego fw z debilnego błędu.
Mój Loader który zajmuje się wywoływanie kontrolera, ma też za zadanie pobrać z niego widok i model. Po czym wykonać model i wrzucić wynik do widoku. Oczywiście inteligentnie w celach testowych napisałem jedną cholerną linijkę w widoku ( dodawanie danych ) żeby sprawdzić czy wyświetli. Tak wiem błąd logiczny architektury MVC, ale to miał być tylko test. W efekcie Loader nadpisywał mi oczywiście dane i nie wiedziałem dlaczego. ![]() Czy da się w jakiś magiczny sposób zablokować wywoływanie metody z klasy w której ona się znajduje? W tym wypadku chciałbym żeby klasa SDL_View nie miała dostępu do swojej metody assign(). Oczywiście po południu przeprogramuję metody dzieląc je na assign() które będzie dodawało dane do istniejących i clear() które je będzie czyściło, ale tak czy siak dobrze by było to wywołanie zablokować. Sorry za to masło maślane powyżej ale już ledwo na oczy patrzę. |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zamiast brnąć z jednych głupich pomysłów w kolejne przepisz to od nowa.
Przecież to co opisujesz to jakiś spaghetti code. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jedyne rozwiązanie które mi się nasuwa to umieszczenie metody w klasie bazowej jako metody prywatnej.
-------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Jedyne rozwiązanie które mi się nasuwa to umieszczenie metody w klasie bazowej jako metody prywatnej. Autorowi chyba chodzi o coś dokładnie odwrotnego: zablokowanie wywołania metody z klasy, a umożliwienie wywołania tylko z zewnątrz. Osobiście nie mam pojęcia jak to zrobić (o ile jest to oczywiście w ogóle możliwe). |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 24 Pomógł: 3 Dołączył: 25.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Da się to uzyskać poprzez odpowiednie obrobienie wyniku debug_backtrace()" title="Zobacz w manualu PHP" target="_manual, ale sensu podobnie jak mike nie widzę
![]()
Użycie
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Zamiast brnąć z jednych głupich pomysłów w kolejne przepisz to od nowa. Przecież to co opisujesz to jakiś spaghetti code. Skoro to jest spaghetti code to dlaczego wiesz co tutaj się dzieje bez większego opisywania tego mike? ![]() DRA_Loader pobiera przetworzony url z DRA_Router i w ten sposób ustala klasę kontrolera głównego którą zapisuje w tej kolekcji. @Morkai: Też myślałem o debug_backtrace ale mam dziwne wrażenie że tego sposobu zastosować nie należy. Tylko cholera jakoś uzasadnienia nie mogę znaleźć. Chyba tylko mogę się podeprzeć spadkiem wydajności. Bo MVC zamierzam stosować też we wtyczkach a co za tym idzie klasę SDL_View implementującą SDLi_View będzie rozszerzać kilka może kilkanaście klas. p.s. Później sprawdzanie czy kontroler jest 'wywoływalny' , mam zamiar też wprowadzić po uruchomieniu metody init kontrolera. Celem umożliwienia kontrolerowi zatrzymania wywoływania siebie samego. edit> Oczywiście Morkai za przykład wykorzystania debug_backtrace() zasłużone pomógł. Swoją drogą może macie jeszcze jakieś inne pomysły na implementację czwartego modyfikatora dostępu external? ![]() Ten post edytował orglee 13.12.2008, 15:44:38 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.06.2025 - 11:04 |