PHP自动加载SPL的四种处理方式
libs目录下有3个类文件:
Test.class.php
<?php class Test { public function __construct() { echo "Loading Test.class.php <br>"; } }
Test.php
<?php class Test { public function __construct() { echo "Loading Test.php <br>"; } }
User.php
<?php class User { public function __construct() { echo "Loading User.php <br>"; } }
【方法1】
<?php //可以传入多个参数,逗号分隔,多个相同的类名最先找到的最先匹配 spl_autoload_extensions('.class.php,.php'); //设置autoload寻找php定义的类文件的目录,多个目录用PATH_SEPARATOR常量 分隔 $path = get_include_path() . PATH_SEPARATOR . "libs/"; set_include_path($path); //autoload注册 spl_autoload_register(); new Test(); new User();
【方法2】
<?php //定义__autoload函数,页面运行时会先执行这里面的代码 function __autoload($class_name) { require_once "libs/" . $class_name . ".php"; echo "已加载类 " . $class_name . "<br>"; } new Test(); new User();
【方法3】
<?php //自定义的加载类 function myLoader($class_name) { require_once "libs/" . $class_name . ".php"; echo "已加载类 " . $class_name . "<br>"; } //将自定义的类名载入 spl_autoload_register('myLoader'); new Test(); new User();
【方法4】
<?php //自定义的加载类 function myLoader($class_name) { set_include_path("libs/"); spl_autoload($class_name); echo "已加载类 " . $class_name . "<br>"; } //将自定义的类名载入 spl_autoload_register('myLoader'); new Test(); new User();
以上四种方法都可以自动加载libs目录下面的类,运行结果如下:
【总结】