使用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;

SPL常用函数的更多相关文章

  1. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  2. 总结js常用函数和常用技巧(持续更新)

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...

  3. [转]SQL 常用函数及示例

    原文地址:http://www.cnblogs.com/canyangfeixue/archive/2013/07/21/3203588.html --SQL 基础-->常用函数 --===== ...

  4. PHP常用函数、数组方法

    常用函数:rand(); 生成随机数rand(0,50); 范围随机数时间:time(); 取当前时间戳date("Y-m-d H:i:s"); Y:年 m:月份 d:天 H:当前 ...

  5. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  6. Thinkcmf:页面常用函数

    Thinkcmf:页面常用函数 全站seo: 文章列表: {$site_seo_title}        <!--SEO标题--> {$site_seo_keywords}   < ...

  7. matlab进阶:常用功能的实现,常用函数的说明

    常用功能的实现 获取当前脚本所在目录 current_script_dir = fileparts(mfilename('fullpath')); % 结尾不带'/' 常用函数的说明 bsxfun m ...

  8. iOS导航控制器常用函数与navigationBar常用属性

    导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)vi ...

  9. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

随机推荐

  1. puppet报告系统Dashboard部署及配置详解

    Puppet Dasshboard是由支持Puppet开发的公司Puppetlabs创建的,是Ruby on Rails程序.可以作为一个ENC(外部节点分类器)以及一个报告工具,并且正在逐渐成为一个 ...

  2. tr标签使用hover的box-shadow效果不生效

    先说问题: 这是大致的HTML结构 <table cellpadding="0" cellspacing="0"> <thead> &l ...

  3. python selenium(环境搭建)

    一:自动化了解知识 工具安装 什么样的项目适合做自动化? 自动化测试一般在什么阶段开始实施? 你们公司自动化的脚本谁来维护?如何维护? 自动化用例覆盖率是多少? 自动化的原理 通过 webdriver ...

  4. 数据库SQL---范式

    1.数据冗余导致的问题:冗余存储.更新异常.插入异常.删除异常. 2.函数依赖:一种完整性约束. 在关系模式r(R)中,α属于R,β属于R. 1)α函数确定β(β函数依赖于α):记作α→β,对于任意合 ...

  5. 编译原理-第四章 语法分析-4.7 规范的LR分析

    规范的LR分析 一.规范LR(l)项 二.规范LR(l)项集族 1.构建项目集 2.例 三.规范LR(1)语法分析表 1.构造 2.例1 3.例2 四.LALR语法分析表 1.重要性 2.特点 3.构 ...

  6. Web 跨域请求问题的解决方案- CORS 方案

    1.什么是跨域 跨域是指跨域名的访问,以下情况都属于跨域: 跨域现象 实例 域名不相同 www.baidu.com与www.taobao 一级域名相同,但是端口不相同 www.baidu.com:80 ...

  7. Integer和int及String的总结

    秉承着总结发表是最好的记忆,我把之前遇到的问题在这里总结和大家分享一下,希望大家共同进步: 一.Integer和int首先说下自动拆装箱,基本数据类型转换为包装类型的过程叫装箱,反之则是拆箱,其中最特 ...

  8. github使用命令

    创建本地库,提交,和绑定github ,上传代码 git init git add README.md git commit -m "first commit" git remot ...

  9. vue将后台的值赋给前台

    后台传List到前台: 赋值给table 赋值给form(只能一个个的赋值,对应prop属性) 后台传map到前台:(不需要使用下标取值)

  10. SpringCloudStream学习(三)RabbitMQ中的惰性队列

    ​ 从RabbitMQ 3.6.0之后,有了 Lazy Queues 的概念-一个会尽早的将队列中的内容移动到磁盘的队列,并且只有当消费者需要的时候,才会将它们加载到内存中 ​ 惰性队列设计的一个主要 ...