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