![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Witam, załóżmy, że mamy taki przykładowy kod:
Wówczas i tak do załadowania zostanie wykorzystana funkcja wyświetlająca 'A', poza klasą. Czy można przeciążyć funkcję __autoload() tak, aby w powyższym przypadku wyświetliło się 'B' ? Ten post edytował Luneth 23.07.2010, 02:23:13 -------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
nie wiem czy dokładnie o to chodzi, ale zobacz spl_autoload_register
-------------------- awake
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Patrzyłem już, próbowałem i nie mogę chyba ogarnąć działania tej funkcji albo to się nie sprawdza w tym przypadku...
-------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie możesz przeciążyć standardowego __autoloada
A to co kolega podał powinieneś używać ZAMIAST __autoload aby działało w pełni prawidłowo. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Swoją droga stosuję autoładowanie klas tylko w dwóch przypadkach jak na razie, gdy trzeba załadować kontroler, albo element menu, obsługujący linki, wstawienie tam statystyk, ankiety lub czegoś. Może lepszym rozwiązaniem jest zrobić jednak __autload() tylko np z mapą, żeby obsługiwało każdą istniejącą klasę (no z wyjątkiem singletonów)?
-------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A znasz takie schemat ładowania klas?
Kod nazwa_klasy = nazwa/klasy.php nazwa_klasy_dluzsza = nazwa/klasy/dluzsza.php Oczywiście pozostaje odpowiednio obsłużyć include_path -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Wprowadzenie tego schematu kosztowałoby mnie w chwili obecnej nieco więcej zmian, dlatego szukałem sposobu na przeciążenie __autoload, szkoda, że takiej możliwości w php nie ma.
-------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Wprowadzenie tego schematu kosztowałoby mnie w chwili obecnej nieco więcej zmian, dlatego szukałem sposobu na przeciążenie __autoload, szkoda, że takiej możliwości w php nie ma. Też tak miałem ale jest to jedno z lepszych rozwiązań. Oczywiście nie idealne, czasem wymaga modyfikacji lecz warto było. -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Czyli nazwa klasy zawiera ścieżkę do pliku z nią, czy tak? I ten string należy potraktować explodem?
-------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Nie musisz. Wystarczy
Ten post edytował wookieb 23.07.2010, 14:52:46 -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Ostatnie pytanie. Czy to jest to co nazwałeś 'obsłużeniem include_path'?
-------------------- "It's always darkest before the dawn." |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat A znasz takie schemat ładowania klas? PHP 5.3 jest już na tyle "stabilne", że można korzystać z jego dobrodziejstwa jakim są przestrzenie nazw, a nie taki burdel w nazewnictwie. Przy czym sama metoda pozostaje taka sama jakby na to nie patrzeć.Kod nazwa_klasy = nazwa/klasy.php nazwa_klasy_dluzsza = nazwa/klasy/dluzsza.php Cytat Ostatnie pytanie. Czy to jest to co nazwałeś 'obsłużeniem include_path'? tak ciężko?
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, że nie, sam to zrobilem od razu, ale chciałem wiedzieć co autor posta miał na myśli
![]() edit: Przestrzenie nazw rozwiązanie ciekawe zaś znaleźć hosting z php 5.3 trudno trochę. Ten post edytował Luneth 23.07.2010, 18:53:54 -------------------- "It's always darkest before the dawn." |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 11:23 |