--TEST-- SPL: spl_autoload() and friends --INI-- include_path=. --FILE-- getMessage() . "\n"; } $test_exts = array(NULL, "1", ".inc,,.php.inc", ""); foreach($test_exts as $exts) { echo "===($exts)===\n"; try { spl_autoload("TestClass", $exts); } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } } try { spl_autoload_extensions(".inc,.php.inc"); spl_autoload("TestClass"); } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } function TestFunc1($classname) { echo __METHOD__ . "($classname)\n"; } function TestFunc2($classname) { echo __METHOD__ . "($classname)\n"; } echo "===SPL_AUTOLOAD()===\n"; spl_autoload_register(); try { var_dump(spl_autoload_extensions(".inc")); var_dump(class_exists("TestClass", true)); } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } echo "===REGISTER===\n"; spl_autoload_unregister("spl_autoload"); spl_autoload_register("TestFunc1"); spl_autoload_register("TestFunc2"); spl_autoload_register("TestFunc2"); /* 2nd call ignored */ spl_autoload_extensions(".inc,.class.inc"); /* we do not have spl_autoload_registered yet */ try { var_dump(class_exists("TestClass", true)); } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } echo "===LOAD===\n"; spl_autoload_register("spl_autoload"); var_dump(class_exists("TestClass", true)); echo "===NOFUNCTION===\n"; try { spl_autoload_register("unavailable_autoload_function"); } catch(Exception $e) { echo 'Exception: ' . $e->getMessage() . "\n"; } ?> ===DONE=== --EXPECTF-- ===EMPTY=== string(9) ".inc,.php" %stestclass.inc Exception: Class TestClass could not be loaded ===()=== Exception: Class TestClass could not be loaded ===(1)=== Exception: Class TestClass could not be loaded ===(.inc,,.php.inc)=== %stestclass %stestclass.php.inc Exception: Class TestClass could not be loaded ===()=== Exception: Class TestClass could not be loaded Exception: Class TestClass could not be loaded ===SPL_AUTOLOAD()=== string(4) ".inc" Exception: Class TestClass could not be loaded ===REGISTER=== TestFunc1(TestClass) TestFunc2(TestClass) bool(false) ===LOAD=== TestFunc1(TestClass) TestFunc2(TestClass) %stestclass.class.inc bool(true) ===NOFUNCTION=== Exception: Function 'unavailable_autoload_function' not found (function 'unavailable_autoload_function' not found or invalid function name) ===DONE===