Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: błąd ścieżki w __autoload i własne Exception
Forum PHP.pl > Forum > PHP
tomek_swat
witam,
mam taką strukturę katalogów


/lib
/lib/classes
/lib/functions
classes.php
/data
/files
/www
/www/index.php

classes.php
  1. <?php
  2.    
  3.    define('DIR_CLASS', 'classes/');
  4.    
  5.    function __autoload($classname){
  6.        
  7.        $path = DIR_CLASS."$classname.php";
  8.        
  9.        if(!file_exists($path)){
  10.            throw new Exception("Brak pliku $path");
  11.        }
  12.        
  13.        require_once("$path");    
  14.        
  15.        if(!class_exists($classname)){
  16.            throw new Exception("Brak klasy $classname");
  17.        }
  18.            
  19.    }
  20.    
  21. ?>


w momencie, gdy próboje powołać w index.php obiekt danej klasy, której definicja znajduję się w pliku o takiej samej nazwie jak klasa w folderze classes, dostaje błąd
  1. Fatal error: Class 'Config' not found in

natomiast gdy plik classes.php wygląda tak:

  1. <?php
  2.    
  3.    define('DIR_CLASS', 'classes/');
  4.    
  5.    function __autoload($classname){
  6.        
  7.        $path = DIR_CLASS."$classname.php";
  8.        
  9.        require_once("$path");    
  10.        
  11.        if(!class_exists($classname)){
  12.            throw new Exception("Brak klasy $classname");
  13.        }
  14.            
  15.    }
  16.    
  17. ?>

wszystko działa. Jak więc poprawnie określić ścieżkę?
Kolejne pytanie brzmi czemu w pierwszym przypadku po wykryciu tej niewłaściwej ścieżki wyskakuję mi błąd i jego opis od parsera a nie ten tekst, który zdefiniowałem sobie w Exception?

pzdr
antyqjon
W autoloadzie nie możesz rzucać wyjątkiem. Tzn no możesz, ale nie zostanie nigdzie wyłapany i PHP rzuci fatalem - patrz manual: __autoload" title="Zobacz w manualu PHP" target="_manual, tam też w komentarzach znajdziesz kilka przypadków obejścia tego problemu.
tomek_swat
ok, doczytam sobie o tym w takim razie czemu file_exists mi błąd powoduję?

dobra poradziłem sobie z tym problemem, nie wziąłem po uwagę, że plik jest dołączany i ścieżka była niewłaściwa

pzdr
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.