SPL函数的使用和文件处理类库(5)

1.什么是Autoload
-为了初始化PHP中的类对象,需要通过一定的方法寻找到类的定义。通常情况下,类会定义在一个单独的文件中。
-Autoload就是php找到这些类的方法


实例:
test.php文件
<?php
class Test{
public function __construct(){
echo "Loading Class libs/Test.php<br>";
}
}
?>
test.class.php文件
<?php
class Test{
public function __construct(){
echo "Loading Class libs/Test.class.php<br>";
}
}
?>
spl_auto.php文件
<?php
spl_autoload_extensions('.php,.class.php');//设置autoload寻找php定义的类文件的扩展名,多个扩展名用逗号分隔,前面的扩展名优先被匹配
set_include_path(get_include_path().PATH_SEPARATOR."libs/");
//设置autoload寻找Php定义的类文件的目录,多个目录用PATH_SEPARATOR进行分隔
spl_autoload_register();//提示PHP使用Autoload机制查找类定义
new Test();


?>


2.__autoload装载类
功能同上,用于加载类文件


实例:
<?php
function __autoload($class_name){//定义__autoload函数,可以在不调用spl_autoload_register的函数情况下完成类的装载
echo "__autoload class:".$class_name."<br>";
require_once($class_name.".php");//装载类
}
function classLoader($class_name){//定义一个替换__autoload函数的类文件装载函数
echo "classLoader:".$class_name."<br>";
require_once($class_name.".php");//装载类
}
spl_autoload_register('classLoader');//传入定义装载好的装载类的函数的名称替换__autoload函数
new Test();
?>


 require_once 和spl_autoload的替换
<?php
function classLoader($class_name){//定义一个替换__autoload函数的类文件装载函数
echo "classLoader:".$class_name."<br>";
set_include_path("spl/");
spl_autoload($class_name);//当我们不用require或者require_once载入类文件的时候,而想通过系统查找include_path来装载类时,必须显示调用spl_autoload函数,参数是类的名称来重启类文件的自动查找(装载)
// require_once($class_name.".php");//装载类
}


spl_autoload_register('classLoader');//传入定义装载好的装载类的函数的名称替换__autoload函数
new Test();
?>


理解回顾:
  1.理解和使用默认spl_autoload_register函数装载类
  2.理解和使用__autoload装载类
  3.通过自定义的__autoload函数装载类


3.SPL函数的使用--其他函数
迭代器相关函数
1.iterator_apply为迭代器中每个元素调用一个用户自定义函数
2.iterator_count计算迭代器中元素的个数
3.iterator_to_array将迭代器中的元素拷贝到数组


类信息相关函数
1.class_implements返回指定的类实现的所有接口
可以用instanceof语句判断某个对象是否实现了某个接口或者是某个类的实例
2.class_parents返回指定类的父类
如果继承了多次,会把所有的父类都打印出来


SPL函数使用的小结
1.Autoload的使用 ※重点
2.迭代器相关的函数
了解而已
3。类信息相关函数
用的比较少


五、SPL的文件处理类库
·SplFileInfo用于获得文件的基本信息,比如修改时间、大小、目录等信息
·SplFileObject用于操作文件的内容,比如读取、写入

猜你喜欢

转载自blog.csdn.net/qq402507269/article/details/50792329