文档章节

PHP 中的__autoload() 与spl_autoload_register()函数

噢_我想多了
 噢_我想多了
发布于 2015/09/25 11:53
字数 488
阅读 212
收藏 2

__autoload()函数可以实现自动加载所需要的类

用法:

__autoload() 在实例化对象时,若没有引入相关的文件,就会自动调用这个方法来进行加载。

实例:

public function __autoload($className)
{
    $actionPath ="E://project/LiB/Action/".$className.".class.php";
    if(!file_exists($actionPath))
    {
        echo $actionPath."路径不存在";
    }
    require_once($actionPath);
}

spl_autoload_register()函数

作用:注册自定义加载函数

比如在文件中定义一个  loadfile()作为自定义加载函数,但是至少声明或者定义这个函数后,在实例化对象时,程序并不会自动去运行loadfile()这个函数,而会自动运行__autoload()函数。而spl_autoload_register()函数就是让程序在实例化一个对象时组自动调用loadfile()函数。

实例:

<?php
    class test
    {
        public function testLoad()
        {
               echo "这是test类中的testLoad方法";
        }
    }


?>

<?php
    spl_autoload_register(array("AutoLoad", "autoLoadCore"), '', true); //注册自动加载方法
    
    //定义自定义加载函数
    public static function autoLoadCore($classname)
    {
        $classPath =  "E://project/LiB/Action/".$className.".class.php";
        if(!file_exists($classPath))
        {
            echo $classPath."路径不存在";
        }
        require_once($classPath);
    }
    
    $test = new test();
    $test->testLoad();
?>

结果: 输出:这是test类中的testLoad方法;

spl_autoload_register()有三个参数

第一个:array($classname,$method),是一个数组,数组有两个元素,第一个元素表示自动加载方法所在的类,第二个表示自动加载方法的函数名

第二个参数:表示无法成功注册时是否抛出异常,true/false

第三个参数:true/false,表示是否将函数注册到自动加载函数队列之首。

注意:1、spl_autoload_register()实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行(至今我没有成功实现逐个执行的功能,请各位指点)

2、若使用spl_autoload_register()注册了新的自动加载函数,那么原有的__autoload()函数将失效,若需使用__autoload()函数,需要通过spl_autoload_register()再次注册__autoload()函数,方能在使用此函数

© 著作权归作者所有

噢_我想多了
粉丝 1
博文 8
码字总数 1950
作品 0
成都
程序员
私信 提问
PHP中spl_autoload_register函数的用法

PHP中splautoloadregister函数的用法 splautoloadregister (PHP 5 >= 5.1.2) splautoloadregister — 注册autoload()函数 说明 bool splautoloadregister ([ callback $autoload_function ] ......

net ljx
2012/10/25
68
0
PHP中spl_autoload_register函数的用法

splautoloadregister (PHP 5 >= 5.1.2) splautoloadregister — 注册autoload()函数 说明 bool splautoloadregister ([ callback $autoload_function ] ) 将函数注册到SPL autoload函数栈中。......

121137141
2013/04/10
102
0
类自定载入

为什么需要类自动加载机制 原因: 在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来。这个在小规模开发的时候,没什么大问...

金于虎
2016/11/15
10
0
PHP的autoLoad自动加载机制 的几种方式

说说PHP的autoLoad自动加载机制 php的autoload大致可以使用两种方法:autoload和spl方法。这两种方法又各有不同的几种使用方法 autoload的使用方法1: 最经常使用的就是这种方法,根据类名,...

daniel-john
2015/08/27
66
0
spl_autoload_register && __autoload

一、autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数。看下面例子: printit.class.php <?php class PRINTIT { function doPrint() { echo 'hello...

drewin
2014/11/06
117
0

没有更多内容

加载失败,请刷新页面

加载更多

获取map()以在Python 3.x中返回列表

我正在尝试将列表映射为十六进制,然后在其他地方使用该列表。 在python 2.6中,这很简单: 答: Python 2.6: >>> map(chr, [66, 53, 0, 94])['B', '5', '\x00', '^'] 但是,在Python 3.......

技术盛宴
7分钟前
4
0
基于TI达芬奇系列TMS320DM8148浮点DSP C674xBOOT SET启动选择开关、Micro SD接口

说明 由广州创龙设计的SOM-TL8148和SOM-TL8127核心板是Pin To Pin兼容,两款核心板公用同一块底板。DM8148与DM8127相比,DM8148有SATA接口,DM8127没有SATA接口;而DM8127有CSI2接口,DM814...

Tronlong创龙
10分钟前
4
0
产品经理如何有效进行需求管理?

需求是整个软件项目当中最重要一项输入。软件开发和传统生产行业最大的区别在于,需求总是模糊的、主观的和随时变化的。相对于电子产品、汽车等制造行业有形的硬件需求,软件开发的需求的描述...

Worktile
24分钟前
2
0
Python 判断变量是否是 None 的三种写法

代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是if x is None; 第二种是 if not x:; 第三种是if not x is None(这句这样理解更清晰if not (x is None)) 。 如果你觉得...

每天学Python
27分钟前
2
0
springboot初探——启动流程

前面已经介绍一下springboot,本篇开始介绍springboot在启动过程中做了什么,凭什么那么少的代码就能完成一个web项目。 其他的我们可以先不管,先来看一眼springboot的main方法 @SpringBootA...

计算机狼
46分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部