SPL常用函数

qq%e5%9b%be%e7%89%8720170521235008

使用SPL_AUTOLOAD_REGISTER装载类

<?php

/**
* libs/Test.class.php 
*/
class Test 
{

    function __construct()
    {
        # code...
        echo 'loading class libs/Test.class.php\n';
    }
}


/**
* autoload.php 
*/
//设置autoload寻找php定义的类文件的扩展名,多个扩展名用逗号分隔,前面的扩展名优先匹配
spl_autoload_extensions('.class.php,.php');
//设置autoload寻找PHP定义的类文件的目录,多个目录用PATH_SEPARATOR进行分隔
set_include_path(get_include_path().PATH_SEPARATOR.'libs/');
//提示PHP使用autoload机制查找类定义
spl_autoload_register();
new Test();

__AUTOLOAD装载类

<?php

function __autoload($class_name){
    //定义autoload函数,可以在不调用spl_autoload_register函数的情况下完成类的装载
    echo '__autoload class :'.$class_name.PHP_EOL;
    require_once 'libs/'.$class_name.'.php';//装载类
}
//定义一个替换__autoload函数的类文件装载函数
function classLoader($class_name){
    echo 'classloader() load class : '.$class_name.PHP_EOL;
    require_once 'libs/'.$class_name.'.php';//装载类
}
//传入定义好的装载类的函数的名称替换__autoload函数
spl_autoload_register('classLoader');

new Test();

 自定义__autoload函数装载类

<?php

//定义一个替换__autoload函数的类文件装载函数
function classLoader($class_name){
    echo 'classloader() load class : '.$class_name.PHP_EOL;

    //当我们不用require_once或require载入类文件的时候,而想通过系统查找include_path来装载类时,必须显式调用spl_autoload函数,参数是类的名称来重启类文件的自动查找(装载)
    set_include_path('libs/');
    spl_autoload($class_name);
}
//传入定义好的装载类的函数的名称替换__autoload函数
spl_autoload_register('classLoader');

new Test();

 SPL的文件处理类

  • SplFileInfo 用于获取文件基本信息,如创建时间,大小,文件名等
  • SplFileObject 用于操作文件,比如读写
<?php

date_default_timezone_set('PRC');

$file = new SplFileInfo('tmp.txt');

echo 'file is created at '.date('Y-m-d H:i:s',$file->getCTime()).PHP_EOL;

echo 'file is modifyed at '.date('Y-m-d H:i:s',$file->getMTime()).PHP_EOL;

echo 'file size is '.$file->getSize().'bytes'.PHP_EOL;

//读取文件里的内容
$fileObj = $file -> openFile('r');

while ($fileObj ->valid()) {
    # code...
    echo $fileObj->fgets();
}
//销毁对象
$fileObj = null;
$file  = null;

猜你喜欢

转载自www.cnblogs.com/xiaobingch/p/12464546.html