1 |
<?php<br>/**<br> * 函数签名<br> * spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool<br> *<br> * <br> * 参数列表<br> *<br> * autoload_function<br> * 欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数spl_autoload()。<br> *<br> * throw<br> * 此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。<br> *<br> * prepend<br> * 如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。<br> *<br> */<br><br><br><br>function loadx($className)<br>{<br> echo "运行 loadx\n";<br> $fileName = getcwd() . <em>DIRECTORY_SEPARATOR </em>. 'libs' . <em>DIRECTORY_SEPARATOR </em>. 'tests' . <em>DIRECTORY_SEPARATOR </em>. $className .'.php';<br> if (file_exists($fileName)) {<br> require_once $fileName;<br> return true;<br> } else {<br> echo "loadx 失败";<br> return false;<br> }<br>}<br><br>function loady($className)<br>{<br> echo "运行 loady\n";<br> $fileName = getcwd() . <em>DIRECTORY_SEPARATOR </em>. 'libs' . <em>DIRECTORY_SEPARATOR </em>. $className . '.php';<br> echo $fileName;<br> if (file_exists($fileName)) {<br> require_once $fileName;<br> return true;<br> } else {<br> echo "loady 失败";<br> return false;<br> }<br>}<br><br>try {<br> /**<br> * spl_autoload_register 的第一个参数是一个不存在的函数时(除此之外不知道第二个参数还能有什么其他作用),<br> * 如果第二个参数设置为 true 则会抛出一个异常, 如果设置为 false 则不会抛出异常<br> */<br> spl_autoload_register('loadyy', false);<br>} catch (Exception $e) {<br> echo $e->getMessage();<br>}<br><br>/**<br> * 第三个参数为 true 表示将该加载函数放到队列头部,下面的代码表示先执行 loadx 函数加载类,<br> * 如果 loadx 没加载成功则继续用 loady 函数加载类<br> */<br>spl_autoload_register('loady', true);<br>spl_autoload_register('loadx', true,true);<br><br><br>new A();<br>new B();<br>new TestA();<br><br><br><br><br> |