SPL学习笔记(5)---函数的使用
一:Autoload函数
I : 为了实例化PHP中的类对象,需要通过一定的方法寻找到类的定义。
通常情况下,类会定义在一个单独的文件中。
现在我们建立一个文件夹libs,建立文件 Test.php和Test.class.php
libs/Test.php 和 libs/Test.class.php 和 index.php
1:libs/Test.php 的代码
1 <?php 2 class Test{ 3 public function __construct(){ 4 echo "Loading class libs/Test.php<br>"; 5 } 6 }
2:libs/Test.class.php 的代码
1 <?php 2 class Test{ 3 public function __construct(){ 4 echo "Loading class libs/Test.class.php<br>"; 5 } 6 }
3:index.php 的代码
1 <?php 2 //设置autoload的装载扩展后缀名,可以是多个,用逗号隔开,前面的优先 3 spl_autoload_extensions('.class.php,.php'); 4 //设置环境变量 5 set_include_path(get_include_path().PATH_SEPARATOR."libs/"); 6 //告诉php使用autoload函数自动装载类 7 spl_autoload_register(); 8 //可以使用 9 $obj=new Test(); 10 //输出结果 Loading class libs/Test.class.php
II:其他方法
__autoload()函数和自定义装载函数
1 <?php 2 //魔术方法自动装载类,不用使用spl_autoload_register 3 function __autoload($classname){ 4 require_once 'libs/'.$classname.".php"; 5 } 6 //自定义装载类,可以使用spl_autoload_register("load")自动调用 7 function load($classname){ 8 require_once 'libs/'.$classname.".php"; 9 } 10 11 new Test();//输出:Loading class libs/Test.php
load()函数可以不用require_once函数,可以使用spl_autoload函数
1 function load($classname){ 2 spl_autoload("libs/".$classname); 3 }
III:Autoload()运行流程
二:其他函数
SplFileInfo类和SplFileObject类。
1 <?php 2 $file=new SplFileInfo("demo.txt"); 3 //文件创建时间 4 echo "FILE is CREATE at ".date("Y-m-d H:i:s",$file->getCTime())."<br>"; 5 //文件修改时间 6 echo "FILE is Modified at ".date("Y-m-d H:i:s",$file->getMTime())."<br>"; 7 //文件大小 8 echo "FILE size is ".$file->getSize()." bytes<br>"; 9 //读取文件内容 10 $fileObj=$file->openFile("r"); 11 while($fileObj->valid()){ 12 //得到文件一行内容 13 echo $fileObj->fgets(); 14 } 15 $fileObj=null;//关闭文件,必要 16 $file=null;//关闭文件,必要
三:课程总结