详解PHP spl_autoload_register()函数
在了解这个函数之前先来看另一个函数:__autoload。
一、__autoload
这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数。看下面例子:
printit. class .php
|
<?php
|
class PRINTIT {
|
function doPrint() {
|
echo 'hello world' ;
|
}
|
}
|
?>
|
index.php
|
<?
|
function __autoload( $class ) {
|
$file = $class . '.class.php' ;
|
if ( is_file ( $file ) ) {
|
require_once ( $file );
|
}
|
}
|
$obj = new PRINTIT();
|
$obj ->doPrint();
|
?>
|
运行index.php后正常输出hello world。在index.php中,由于没有包含printit.class.php,在实例化printit时,自动调用__autoload函数,参数$class的值即为类名printit,此时printit.class.php就被引进来了。
在面向对象中这种方法经常使用,可以避免书写过多的引用文件,同时也使整个系统更加灵活。
二、spl_autoload_register()
再看spl_autoload_register(),这个函数与__autoload有与曲同工之妙,看个简单的例子:
|
<?
|
function loadprint( $class ) {
|
$file = $class . '.class.php' ;
|
if ( is_file ( $file )) {
|
require_once ( $file );
|
}
|
}
|
spl_autoload_register( 'loadprint' );
|
$obj = new PRINTIT();
|
$obj ->doPrint();
|
?>
|
将__autoload换成loadprint函数。但是loadprint不会像__autoload自动触发,这时spl_autoload_register()就起作用了,它告诉PHP碰到没有定义的类就执行loadprint()。
spl_autoload_register() 调用静态方法
|
<?
|
class test {
|
public static function loadprint( $class ) {
|
$file = $class . '.class.php' ;
|
if ( is_file ( $file )) {
|
require_once ( $file );
|
}
|
}
|
}
|
spl_autoload_register( array ( 'test' , 'loadprint' ) );
|
//另一种写法:spl_autoload_register( "test::loadprint" );
|
$obj = new PRINTIT();
|
$obj ->doPrint();
|
?>
|
详解PHP spl_autoload_register()函数相关推荐
- php output详解,PHP输出缓冲控制Output Control系列函数详解,output函数详解
PHP输出缓冲控制Output Control系列函数详解,output函数详解 概述 以前研究过PHP的输入输出缓冲,不过博客搬家以后,原来文章找不到了,今天看到一篇好文,顺便转载过来. 简介 说到 ...
- map函数的用法python,详解Python map函数及Python map()函数的用法
python map函数 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list ...
- 你是真的“C”——详解C语言函数模块知识(上篇)
详解C语言函数模块知识(上篇)
- MaxCompute SQL函数详解 ODPS SQL函数详解---之日期相关函数
MaxCompute SQL函数详解 ODPS SQL函数详解 日期函数 to_date函数 返回类型:datetime 语法:to_date(类型 参数1,类型 参数2);to_date(strin ...
- concat拼接的坑 mysql_详解MySQL拼接函数CONCAT的使用心得
这篇文章我们来讲一下在网站建设中,详解MySQL拼接函数CONCAT的使用心得.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前几篇文章给大家介绍了MySQL中的替换函数( ...
- MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数
MaxCompute SQL函数详解 ODPS SQL函数详解---之常用数学运算相关函数 MaxCompute/ODPS SQL常用数学运算相关函数 ABS函数-计算绝对值 sql:select A ...
- pandas数据清洗:drop函数案例详解、dropna函数案例详解、drop_duplicates函数案例详解
pandas数据清洗:drop函数.dropna函数.drop_duplicates函数详解 1 drop函数简介 1.1 构建学习数据 1.2 删除行两种方法 1.3 删除列两种方法 2 dropn ...
- 详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示
详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示 目录 01-详解函数imread():读取图像文件 02-详解函数imshow():显示图像 03-使用 ...
- python while函数_详解python while 函数及while和for的区别
1.while循环(只有在条件表达式成立的时候才会进入while循环) while 条件表达式: pass while 条件表达式: pass else: pass 不知道循环次数,但确定循环条件的时 ...
最新文章
- 在 Ubuntu 上安装最新版本的 Erlang方法介绍
- redis教程(一)之redis简介
- 学习java的一些笔记(3)
- java方便适配器,JAXB简单自定义适配器以及简单使用
- 中信证券新基建专题报告《5G和数据中心的投资机会》
- 【实战】使用pyecharts绘制词云图-淘宝商品评论展示
- [APIO2018] New Home 新家(线段树,二分答案,离散化)
- Hello Indigo
- 两种DIV水平居中的方法
- 借助FLASH技术美化VBA操作界面
- SPOJ 4487. Can you answer these queries VI splay
- 踏实学习前端,学技术,必有高薪,好的人生,学习量大能力要求高就对了
- 阿里云接受邮件服务器是什么,接收邮件服务器pop3
- 2022年世界最强与最弱的护照:日本和新加坡并列第一,德国和韩国并列第二,美国和英国排名回升 | 美通社头条...
- Api 接口文档是什么?如何直接使用 ApiDoc 生成接口文档
- 研发计算机主板需要什么专业,一种计算机主板研发用固定装置的制作方法
- 前置机的作用(转载)
- ubuntu linux通过rclone 挂载onedrive 到本地磁盘
- pbx_extension_helper: No application ‘Macro‘ for extension (from-internal, h, 1)
- 英语流利说l4u1p2_L4-U1-P2-4 Vocabulary:Geometry 英语流利说 懂你英语