[PHP]loader |
[PHP]loader |
1.05.2011, 15:32:28
Post
#1
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 2 Dołączył: 8.10.2010 Skąd: Poniemieckie miasto przesiedleńców Ostrzeżenie: (0%) |
dlaczego ten loader nie działa? z założeniem ma on ładować inne obiekty zgodnie z Singleton, jednak po wywołaniu jakiegoś obiektu, nie można uzyskać dostępu do jego zmiennych czy funkcji a obiekt jest tworzony
po utworzeniu jakiegoś obiektu:
daje wynik tak, jednak po wywołaniu jakiejś funkcji czy przy próbie dostępu do zmiennej daje rezultat Fatal error: Call to undefined method Obiekt::funkcja() in... a gdy funkcja posiada konstruktor to również kod w nim nie jest wykonywany proszę o jakieś podpowiedzi Ten post edytował olechafm 2.05.2011, 09:18:51 |
|
|
1.05.2011, 15:44:40
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa |
|
|
|
2.05.2011, 13:32:50
Post
#3
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 2 Dołączył: 8.10.2010 Skąd: Poniemieckie miasto przesiedleńców Ostrzeżenie: (0%) |
źle przekopiowałem kod tam są wszędzie static, widać to chyba bo odwołuję się do zmiennych wewnątrz klasy poprzez :: a nie $this->
a co to ma wspólnego z Singletonem? szczerze powiem, nie mi to oceniać bo w końcu zaczynam dopiero ale jest to przykład książkowy, loader kontroluje tworzenie nowych obiektów sprawdza czy obiekt o danej nazwie już istnieje (przechowuje go w tablicy) i jeśli tak to go zwraca, jeśli nie to tworzy nowy i zapisuje, zapobiega w ten sposób tworzeniu wielu instancji tego samego obiektu... obiekt utworzony w ten sposób zwraca na var_dump i print_r:
sama klasa ładowanego obiektu może być banalna i w konstruktorze robić jakieś samo echo "coś tam" i nie działa no i udało mi się odnaleźć źródło problemu, okazało się, że klasa na której testowałem kod nie została poprawnie wgrana przez funkcje __autoload gdyż w jej zasięgu znalazła się inna klasa o takiej samej nazwie, którą __autoload użył do zbudowania obiektu, pytanie moje jednak po odnalezieniu tego problemu brzmi, jaki zasięg ma metoda __autoload gdy poszukuje odpowiedniej klasy i w jaki sposób dokładnie traktuje wpisy jak jak daleko posunie się __autoload żeby odnaleźć definicje klasy? Ten post edytował olechafm 2.05.2011, 13:24:43 |
|
|
2.05.2011, 21:43:55
Post
#4
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) |
Aby uniknąć takich problemów, najlepiej trzymać się standardu PSR-0 ;-)
|
|
|
4.05.2011, 11:08:14
Post
#5
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 2 Dołączył: 8.10.2010 Skąd: Poniemieckie miasto przesiedleńców Ostrzeżenie: (0%) |
rzeczywiście standard wart uwagi, jednak opis nie do końca jasny i klarowny, może ktoś przedstawić przykład struktury katalogów, z plikami klas i ich nazwami, który będzie implementował ten standard dla podanej w tym standardzie funkcji __autoload, tak dla pewności żeby dokładnie zrozumieć
http://groups.google.com/group/php-standar...-final-proposal |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 19:21 |