autoload erdekesseg
Sziasztok,
nem tudom valaki futott e mar bele valami hasonloba, de nekem nagyon furcsanak tunik itten valami:erre kapom azt, hogy:
"igen osztaly van:::vrn_all_products ::: Unexpected error happened!Class vrn_all_products not found"
Ehhez mit szoltok, en nem latom a hibat? Az elirasokat lecsekkoltam!
Udv
Sanyi
■ nem tudom valaki futott e mar bele valami hasonloba, de nekem nagyon furcsanak tunik itten valami:
function __autoload( $class ) {
if (class_exists($class, false) || interface_exists($class, false)) {
return;
}
$file = 'classes' . DIRECTORY_SEPARATOR . $class . '.php' ;
$file2 = 'classes' . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'service_' . $class . '.php' ;
if ( file_exists( $file2 )) {
@require_once( $file2 );
if ( class_exists( $class, false ) ) { echo 'igen osztaly van::: '.$class . ' ::: '; }
}
else if ( file_exists( $file ) ) @require_once( $file );
if ( ! class_exists($class, false) || !interface_exists($class, false)) {
throw new Exception('Class ' . $class . ' not found', 0 );
}
}
"igen osztaly van:::vrn_all_products ::: Unexpected error happened!Class vrn_all_products not found"
Ehhez mit szoltok, en nem latom a hibat? Az elirasokat lecsekkoltam!
Udv
Sanyi
megvan
if ( ! class_exists($class, false) || !interface_exists($class, false)) {
helyett
if ( ! class_exists($class, false) && !interface_exists($class, false)) {
kellett
Udv
Sanyi
pár megjegyzés
A helyedben valamilyen fix névkonvencióval megkülönböztetném a két esetet, nem pedig sorrendben megpróbálva.
Mivel az autoload csak egyszer fog meghívódni, a _once fölösleges.
Kivételt nem lehet autoloadból dobni, lásd: http://weblabor.hu/blog/20080710/phpautoloadbug.
Eleve ne használj @-ot, de van egy kis logikai bukfenc is a dologban. A @-cal azt sugallja a kódod, hogy majd te megoldod a hibakezelést, de ha a require hibázna, akkor az fatal error.
Plusz én nem használnék file_exist-et (ha mégis, akkor inkább is_readable), helyette include (visszatérési érték ellenőrzése), plusz saját hibakezelő. Így gyorsabb lesz az egész, plusz biztosan értesülsz a hibáról.