微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

怎样使用PHP中的spl_autoload_register() 和 __autoload() 函数?

在之前的文章中给大家带来了《PHP中怎样去判断对象是否属于一个类?》,其中详细介绍了在PHP中应该增阳区判断一个对象是否属于一个类的相关知识,本篇文章我们来看一下PHP中的自动加载机制。希望对大家有帮助!

在日常开发使用时,我们面向对象程序设计的基本思想是,通常情况下习惯为每个类都创建一个单独的PHP文件,这样的话为后来的维护提供便利,同时也很容易对类进行复用。

PHP中可以通过spl_autoload_register() __autoload() 函数来实现类的自动加载功能,这样可以节省我们的编程时间和精力。那接下来我们就分别来介绍一下这两个函数吧。

__autoload()函数

__autoload()函数准确来说它是魔术方法,我们在《五分钟带你了解PHP中的魔术方法(实例详解)》中详细的介绍了一些常用的魔术方法,其中讲到,它是自动调用的,也就是需要早特定条件下才会调用函数

当我们 new 一个类时,如果当前源文件中找不到这个类,PHP 则会自动调用 __autoload() 函数,并将类名传递给 __autoload() 函数。这就是__autoload()函数调用的特定条件。它的语法格式如下:

function __autoload($class){
    // 方法体
}

其中我们需要注意的是:

接下来我们通过示例来看一下__autoload() 函数的使用,示例如下:

<?PHP
    function __autoload($class){
        $file = './'.$class.'.PHP';
        include_once($file);
    }
    $obj = new Demo();
?>

运行上面的代码,会自动加载同目录下的 Demo.PHP 文件,Demo.PHP 中的代码如下所示:

<?PHP
    class Demo{
    }
?>

其中我们需要注意的是:__autoload() 函数PHP7.2.0 起已被弃用,可以使用 spl_autoload_register() 函数代替。

spl_autoload_register() 函数

spl_autoload_register()函数可以指定一个函数来替代__autoload()函数功能

spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])

其中需要注意的是:

接下来我们通过示例来看一下,示例如下:

<?PHP
    spl_autoload_register('loadClass');
    function loadClass($class){
        $file = './'.$class.'.PHP';
        include_once($file);
    }
    $obj = new Demo();
?>

上述示例中使用 spl_autoload_register() 函数指定另一个函数来替代 __autoload() 函数

大家如果感兴趣的话,可以点击《PHP教程》进行更多关于PHP知识的学习。

原文地址:https://www.jb51.cc/php/1209752.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐