Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: __autoload i set_include_path
Forum PHP.pl > Forum > PHP
Pax95
Mam problem. Tworzę frameworka, ale podczas modyfikacji pliku zauważyłem błąd w przeglądarce:
Cytat
Przerwane połączenie
Połączenie z serwerem zostało zresetowane podczas wczytywania strony.
Połączenie sieciowe zostało przerwane podczas negocjacji. Spróbuj ponownie.

Znika on, gdy usunę jeden z poniższych kodów:
  1. <?php
  2. set_include_path( get_include_path().PATH_SEPARATOR.'core/' );
  3. ?>

  1. <?php
  2. function __autoload( $ClassName )
  3. {
  4.    include $ClassName. '.php';
  5. }
  6. ?>

Niekiedy udało mi się wywołać error:
Cytat
Fatal error: Cannot redeclare class init in D:\wamp\www\pframework\core\init.php on line 11
erix
Ok, od ogółu do szczegółu: na innym serwerze to samo?
Pax95
Wgrałem na linuxpl.com i wywaliło następujące błędy:
Cytat
Warning: include(Kernel.php) [function.include]: failed to open stream: No such file or directory in /home/pax/domains/piczer.info/public_html/pframework/index.php on line 7

Warning: include(Kernel.php) [function.include]: failed to open stream: No such file or directory in /home/pax/domains/piczer.info/public_html/pframework/index.php on line 7

Warning: include() [function.include]: Failed opening 'Kernel.php' for inclusion (include_path='.:/usr/local/lib/php:core/') in /home/pax/domains/piczer.info/public_html/pframework/index.php on line 7

Fatal error: Class 'Kernel' not found in /home/pax/domains/piczer.info/public_html/pframework/index.php on line 10


index.php
  1. <?php
  2.  
  3. set_include_path( get_include_path().PATH_SEPARATOR.'core/' );
  4.  
  5. function __autoload( $ClassName )
  6. {
  7.    include $ClassName.'.php';
  8. }
  9.  
  10. $Config = Kernel::load( 'config' );
  11.  
  12. /*$Router = Kernel::load( 'router' );   ######## DEBUG
  13. $Router->init( $Config->router );*/
  14.  
  15. ?>


EDIT zauwazylem, ze pliku core/ jest kernel.php, więc poprawiłem, a teraz się wyświetla error 500.
erix
Chyba nie ustawiłeś include_path. [;
Pax95
Jak nie?

  1. <?php
  2. set_include_path( get_include_path().PATH_SEPARATOR.'core/' );
  3. ?>
erix
Cytat
EDIT zauwazylem, ze pliku core/ jest kernel.php, więc poprawiłem, a teraz się wyświetla error 500.


A przy bezpośrednim podaniu ścieżki, bez set_include_path" title="Zobacz w manualu PHP" target="_manual dzieje się to samo?
Pax95
  1. <?php
  2. //set_include_path( get_include_path().PATH_SEPARATOR.'core/' );
  3.  
  4. function __autoload( $ClassName )
  5. {
  6.    include 'core/' .$ClassName. '.php';
  7. }
  8. ?>

O to chodzi? Nadal nie działa.
erix
A błędami sypie?
Pax95
Nie, jest internal server error.
Pax95
Można tak kombinować, i pewnie robimy to w złą stronę. Musi być problem gdzieś indziej, ale nie wiem jak go znaleźć. Ta funkcja działała wcześniej dopóki nie zmodyfikowałem czegoś. Pamiętam, że chciałem foldery wywalić z public_html na zewnątrz, a potem wróciłem, bo było za dużo modyfikacji kodu do zrobienia.
erix
Może pokaż po prostu strukturę całości?
Pax95
O to chodzi?
CODE
D:\wamp\www\pframework\
| .htaccess
| index.php
|
|---app
| |
| |---config
| | | config.php
| |
| |---controllers
| |
| |---helpers
| | | validator.php
| |
| |---models
| |
| |___views
|
|___core
| config.php
| debug.php
| dispather.php
| init.php
| kernel.php
| router.php

Na stan dzisiejszy
erix
A jakieś przykładowe wywołanie? (które wyzwala autoload)
Pax95
? Nie rozumiem
erix
No, kawałek pliku, który wyzwala autoload.
Cysiaczek
Co to ma wspólnego z OOP? Przenoszę na PHP
Fifi209
Cytat(Cysiaczek @ 19.07.2009, 12:51:02 ) *
Co to ma wspólnego z OOP? Przenoszę na PHP


Może to, że __autoload służy do wczytywania klas, więc może tym autor kierował się zakładając wątek.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.