spl_autoload_001.phpt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. --TEST--
  2. SPL: spl_autoload() and friends
  3. --INI--
  4. include_path=.
  5. --FILE--
  6. <?php
  7. echo "===EMPTY===\n";
  8. var_dump(spl_autoload_extensions());
  9. spl_autoload("TestClass");
  10. if (!class_exists("TestClass")) {
  11. echo "Class TestClass could not be loaded\n";
  12. }
  13. $test_exts = array(NULL, "1", ".inc,,.php.inc", "");
  14. foreach($test_exts as $exts) {
  15. echo "===($exts)===\n";
  16. spl_autoload("TestClass", $exts);
  17. if (!class_exists("TestClass")) {
  18. echo "Class TestClass could not be loaded\n";
  19. }
  20. }
  21. spl_autoload_extensions(".inc,.php.inc");
  22. spl_autoload("TestClass");
  23. if (!class_exists("TestClass")) {
  24. echo "Class TestClass could not be loaded\n";
  25. }
  26. function TestFunc1($classname)
  27. {
  28. echo __METHOD__ . "($classname)\n";
  29. }
  30. function TestFunc2($classname)
  31. {
  32. echo __METHOD__ . "($classname)\n";
  33. }
  34. echo "===SPL_AUTOLOAD()===\n";
  35. spl_autoload_register();
  36. var_dump(spl_autoload_extensions(".inc"));
  37. var_dump(class_exists("TestClass", true));
  38. echo "===REGISTER===\n";
  39. spl_autoload_unregister("spl_autoload");
  40. spl_autoload_register("TestFunc1");
  41. spl_autoload_register("TestFunc2");
  42. spl_autoload_register("TestFunc2"); /* 2nd call ignored */
  43. spl_autoload_extensions(".inc,.class.inc"); /* we do not have spl_autoload_registered yet */
  44. var_dump(class_exists("TestClass", true));
  45. echo "===LOAD===\n";
  46. spl_autoload_register("spl_autoload");
  47. var_dump(class_exists("TestClass", true));
  48. echo "===NOFUNCTION===\n";
  49. try {
  50. spl_autoload_register("unavailable_autoload_function");
  51. } catch(\TypeError $e) {
  52. echo $e->getMessage() . \PHP_EOL;
  53. }
  54. ?>
  55. --EXPECTF--
  56. ===EMPTY===
  57. string(9) ".inc,.php"
  58. %stestclass.inc
  59. Class TestClass could not be loaded
  60. ===()===
  61. Class TestClass could not be loaded
  62. ===(1)===
  63. Class TestClass could not be loaded
  64. ===(.inc,,.php.inc)===
  65. %stestclass
  66. %stestclass.php.inc
  67. Class TestClass could not be loaded
  68. ===()===
  69. Class TestClass could not be loaded
  70. Class TestClass could not be loaded
  71. ===SPL_AUTOLOAD()===
  72. string(4) ".inc"
  73. bool(false)
  74. ===REGISTER===
  75. TestFunc1(TestClass)
  76. TestFunc2(TestClass)
  77. bool(false)
  78. ===LOAD===
  79. TestFunc1(TestClass)
  80. TestFunc2(TestClass)
  81. %stestclass.class.inc
  82. bool(true)
  83. ===NOFUNCTION===
  84. spl_autoload_register(): Argument #1 ($callback) must be a valid callback or null, function "unavailable_autoload_function" not found or invalid function name