![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam problem z którym nie umiem sobie poradzić żadne wygłuszanie czy też try-e nie działają. Więc pomyślałem że napiszę. AUTOLOADER zbudowany jest na
problem w tym ze gdy includuje jakis plik z katalogu którego autoloader nie obejmuje (MA NIEOBEJMOWAC) otrzymuje fatal error... przy probie utworzenia klasy. Jak ograniczyć zasięg autoloadera? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dany autoloader nie jest wstanie wczytać danej klasy, powinien zwrócić wartość false. Zadanie wczytania klasy zostanie wtedy oddelegowane do następnego autoloadera.
Ten post edytował Crozin 15.07.2012, 19:40:28 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jest jeden autoloader.
Nie ma więcej Wczytuje moduł powiedzmy logowania i tam już autoloader nie powinien zaglądać ale wywala fatala. w skrócie jak go ograniczyć do kilku katalogów? Ten post edytował KotWButach 15.07.2012, 19:49:48 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Możesz napisać co chciałbyś uzyskać? Bo wydaje mi się, że próbujesz zrobić coś w dziwny/błędny sposób. Skoro jest jeden autoloader, który z jakiś przyczyn nie może wczytać pliku z klasą co niby innego miałby interpreter zrobić jak nie rzucić fatalem?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam główny plik index w ktorym jest utworzony obiekt klasy auloloader.
mam katalogi w tym katalog lib oraz mod w ktalogu 'lib' znajduje sie plik z klasa 'module' który ma za zadanie wczytywać moduły. Jedna z metod używa do wczytania modułu z katalogu 'mod' własnie 'require_once' i jeżeli jest klasa to tworzy obiekt. I moduł działał by gdyby nie fatal error który nie powinien był się pojawić. A już napewno autoloader nie powinien mi zaglądać w moduły więc tam mam namespace. Ale jak rozwiązac problem z require w katalogu mod? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Funkcją autoloadera nie jest zainicjowanie objektu, ale przygotowanie do jego inicjacji. Samo utworzenie objektu leży ciągle w kwestii interpretera php i jak sądze, on wyrzuca błąd. Jeżeli funkcja autoloadera nie przygotowała dobrze środowiska do utworzenia objektu (np. nie zaincludowała pliku z odpowiednią klasą), PHP nie będzie w stanie utworzyć owego objektu i wyrzuca fatal error.
Musisz znaleźć inny sposób na sprawdzanie czy klasa istnieje. Na pewno nie obędzie się bez class_exists(), być może wcześniejszym file_exists() oraz require_once(), żeby w końcu móc sprawdzić czy klasa jest w pliku. Innego sposobu dostępnego z czystego PHP do tej pory nie widziałem. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 10 Dołączył: 8.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
SSCCE <-- nie wiem co to jest a i przetłumaczyć zbyt trafnie nie potrafię a szkoda...
Co do klasy którą podałeś taka sama reakcja pomimo że mam kod
to nie działa czy w takim wypadku wskazane było by użycie __autoloadera jako że on jak nie ma podane co i jak to nie szuka dalej... Nie wiem czy to dobrze określiłem ale z tą nie mam problemu... Ten post edytował KotWButach 16.07.2012, 00:06:05 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze, pokaż błąd - tam powinno pisać co jest nie tak. Po drugie, czy mógłbyś pokazać tutaj większą część kodu? Np co znajduje się w pliku class.php?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 320 Pomógł: 29 Dołączył: 3.04.2010 Ostrzeżenie: (20%) ![]() ![]() |
SSCCE <-- nie wiem co to jest a i przetłumaczyć zbyt trafnie nie potrafię a szkoda... Short, Self Contained, Correct Example Short (Small) - Minimise bandwidth for your example, do not bore the audience. Self Contained - Ensure everything is included, ready to go. Correct - Copy, paste, (compile,) see is the aim. Example - Displays the problem you are trying to solve. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 15:08 |