PHP自动加载SPL的四种处理方式

libs目录下有3个类文件:

Test.class.php

<?phpclass Test{ public function __construct() { echo "Loading Test.class.php <br>"; }}

Test.php

<?phpclass Test{ public function __construct() { echo "Loading Test.php <br>"; }}

User.php

<?phpclass 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目录下面的类,运行结果如下:

 

 

【总结】

 

相关文章