`
xubaoguo
  • 浏览: 81266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PHP类的自动加载__autoload && spl_autoload_register

PHP 
阅读更多

通常我们写一个类如下:

a.php

class A
{
    public function __construct()
    {
        echo "hello world!";
    }
}

page.php

require("a.php");
$a = new A();

我们是通过手工引用某个类的文件来实现函数或者类的加载

但是当系统比较庞大,以及这些类的文件很多的时候,这种方式就显得非常不方便了

于是PHP5提供了一个::auotload::的方法

我们可通过编写该方法来自动加载当前文件中使用的类文件

page.php

function __autoload($classname)
{
    $class_file = strtolower($classname).".php";
    if (file_exists($class_file)){
        require_once($class_file);
    }
}

$a = new A();

这样,当使用类A的时候,发现当前文件中没有定义A,则会执行autoload函数,并根据该函数实现的方式,去加载包含A类的文件

同时,我们可以不使用该方法,而是使用我们自定义的方法来加载文件,这里就需要使用到函数

bool spl_autoload_register ( [callback $autoload_function] )

page.php

function my_own_loader($classname)
{
    $class_file = strtolower($classname).".php";
    if (file_exists($class_file)){
        require_once($class_file);
    }
}

spl_autoload_register("my_own_loader");

$a = new A();

实现的是同样的功能

自定义的加载函数还可以是类的方法

class Loader
{
    public static function my_own_loader($classname)
    {
        $class_file = strtolower($classname).".php";
        if (file_exists($class_file)){
            require_once($class_file);
        }
    }
}

// 通过数组的形式传递类和方法的名称
spl_autoload_register(array("my_own_loader","Loader"));

$a = new A();
分享到:
评论

相关推荐

    PHP中spl_autoload_register()和__autoload()区别分析

    当你调用spl_autoload_register()时,PHP会将这些自定义的自动加载函数添加到自动加载栈中,当实例化未知类时,PHP会依次调用栈中的每个自动加载函数,直到找到并加载类文件。 spl_autoload_register()的使用方法...

    PHP中spl_autoload_register()函数用法实例详解_.docx

    `spl_autoload_register()`函数是PHP SPL(Standard PHP Library)扩展中用于实现自动加载的核心函数。本文将深入探讨`spl_autoload_register()`的用法及其在实际开发中的应用。 首先,我们来看一下`__autoload`...

    spl_autoload_register与autoload的区别详解

    spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数...

    PHP中spl-autoload-register()函数用法实例详解-.docx

    spl_autoload_register() 函数是 PHP 中的一个自动加载函数,用于注册自动加载函数,以便在实例化未定义的类时自动加载该类的类文件。 一、__autoload 函数 __autoload 函数是一个自动加载函数,在 PHP5 中,当...

    php __autoload自动加载功能详解

    在PHP编程中,`__autoload`函数是一种非常重要的机制,它允许你在运行时动态地加载类文件,从而避免了在程序开始时显式地引入所有需要的类。这个功能极大地提高了代码的组织性和效率,减少了代码冗余。下面将详细...

    PHP函数spl_autoload_register()用法和__autoload()介绍

    总之,spl_autoload_register()是一个灵活且强大的函数,它为PHP开发者提供了极高的自由度来设计类的自动加载逻辑。通过合理地利用spl_autoload_register(),开发者可以有效地解决不同框架或库之间的冲突问题,并且...

    php中spl_autoload详解

    总的来说,`spl_autoload` 和 `spl_autoload_register` 提供了一种灵活的类自动加载机制,可以帮助开发者构建更加模块化和易于维护的PHP项目。通过自定义自动加载函数,你可以根据项目需求定制类文件的加载逻辑,...

    PHP spl_autoload_register实现自动加载研究

    在PHP编程中,`spl_autoload_register`是一个非常重要的函数,它用于实现自动加载功能,大大简化了类库和对象的加载过程。自动加载机制允许我们无需显式地使用`require`或`include`来引入类文件,而是当尝试访问尚未...

    PHP中spl-autoload-register()函数用法实例详解-.pdf

    spl_autoload_register() 函数是 PHP 中用于自动加载类的函数,作用类似于 __autoload 函数。下面我们将详细介绍 spl_autoload_register() 函数的用法实例。 一、__autoload 函数 在 PHP5 中,__autoload 函数是一...

    PHP中spl_autoload_register函数的用法总结

    在PHP编程中,`spl_autoload_register`是一个非常重要的函数,尤其对于大型项目而言,它提供了优雅的自动加载类的方式,极大地简化了代码管理和维护。该函数从PHP 5.1.2版本开始引入,是Standard PHP Library (SPL)...

    PHP中spl_autoload_register()函数用法实例详解

    在PHP编程中,`spl_autoload_register()` 是一个非常重要的函数,它用于注册自定义的自动加载函数,以便在尝试实例化未定义的类时自动加载相应的类文件。这个功能在大型项目中尤为有用,因为它可以帮助减少代码中的...

    PHP类的自动加载实例

    为了解决这个问题,我们可以使用__autoload()函数或者 spl_autoload_register() 函数来实现自动加载机制。当尝试使用未定义的类时,这些函数会被调用,并尝试找到并包含相应的类文件。 第一种方式是使用传统的__...

    php自动加载方式集合_.docx

    本篇文章将详细探讨三种PHP中的自动加载方式:常规加载、`__autoload()`函数以及`spl_autoload_register()`函数。 1. **常规加载**: 常规加载方法包括`require`、`require_once`、`include`和`include_once`。...

    php中使用__autoload()自动加载未定义类的实现代码

    然而,随着PHP 5的引入,最佳实践逐渐转向了使用SPL(Standard PHP Library)中的spl_autoload_register()函数来注册多个自动加载函数,这种做法更为灵活和健壮,尤其是在大型项目中。 尽管如此,了解__autoload()...

    PHP文件自动加载

    类自动加载实现** ```php class Loader { public static function autoload($class) { $path = ''; $path = str_replace('_', '/', $class) . '.php'; include_once $path; } } // 注册自动加载函数 spl_...

Global site tag (gtag.js) - Google Analytics