![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 22.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam drogich forumowiczów.
Sfrustrowany i zirytowany walką z include, include_once itp. zwracam się do was. Mój problem polega na tym, iż podzieliłem sobie kod strony na kilkanaście plików. Następnie zrobiłem sobie jeden plik o nazwie Include.php, dodałem go do głównego pliku, w którym generuję stronę i wszystko było ok. To rozwiązanie wydawało mi się... "brzydkie", więc postanowiłem to zrobić tak, jak np. robi się to w C++. Cytat GUI/Page.php index.php Hash.php
Nie zgadniecie co się stało... Cytat Warning: include_once(../Hash.php) [function.include-once]: failed to open stream: No such file or directory in (...) on line 3 Warning: include_once() [function.include]: Failed opening '../Hash.php' for inclusion (include_path='(...)') in (...) on line 3 Fatal error: Call to undefined function Code() in (...) on line 7 Wiem co ten błąd oznacza, wiem dlaczego tak się stało, ale nie wiem, czy jest jakieś proste, optymalne i piękne rozwiązanie (np. jakaś funkcja PHP), która mi pomoże. Macie może na to jakieś swoje sposoby, porady? Pozdrawiam, 404 Ten post edytował 404 23.05.2011, 00:10:09 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 566 Pomógł: 35 Dołączył: 21.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Są 3 opcje w zasadzie:
1. include_path 2. używanie klas i spl_autoloader 3. plik config.php a w nim define("APATH", "/absolute/path"); i później includować używając tej stałej Najlepsze byłoby #2 ![]() -------------------- flexiCMS v2 [|||||||+--] 75% done
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
W jego przypadku opcja nr. 3
![]() 404 twój drobny błąd polega na tym, że po zaincludowaniu pliku do pliku nadrzędnego przyjmuje jego "wartości" w twoim wypadku zamiast ../hash.php powinno być hash.php ;] dlatego polecam lekturę o ścieżkach względnych i bezwzględnych w php |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 226 Pomógł: 25 Dołączył: 22.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
@kiler129:
Opcja druga odpada już na wstępie. Nie będę tworzył klasy dla każdego modułu strony (moim zdaniem, to łamie zasady OOP (chociaż czy w PHP można mówić o OOP? ;p)). Opcja trzecia- plik config.php też by trzeba includować. @CuteOne: Jak już mówiłem- wiem na czym polega ten błąd ![]() Cytat forum/index.php Include/GUI/Page.php Include/Hash.php index.php Zamieniłbym: na to wtedy błąd by występował w pliku forum/index.php Mam nadzieję, że piszę w miarę zrozumiale ![]() Na dzień dzisiejszy znalazłem takie rozwiązania: 1. (testowane na localhoscie)
Wszystko działa tak jakbym chciał. 2. Z set_include_path też kombinowałem. Też działało ![]() Dziękuję za dotychczasową pomoc ![]() ![]() /edit: Wracając do set_include_path. Najpierw zmieniałem ścieżkę tylko w pierwszym pliku, który odczytywał interpreter PHP (w powyższym przykładzie były to pliku index.php i forum/index.php) jednak to rozwiązanie wymuszało zrobienie rzeczy, które mi się nie podobały. Wpadłem na pomysł żeby set_include_path wywołać w każdym includowanym pliku. Takie rozwiązanie satysfakcjonowałoby mnie w 101%, ale przecież zawsze musi być jakieś "ale". Tym "ale" jest tutaj wydajność. Skrypt (z powyższego przykładu) wykonuje się troszeczkę dłużej. Ten post edytował 404 23.05.2011, 13:32:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 06:43 |