什么是 php 中的自动加载?

2022-08-30 09:53:17

什么是 PHP 中的自动加载?


答案 1

这将对有关自动加载的使用有所帮助。http://ditio.net/2008/11/13/php-autoload-best-practices/

这是一个神奇的函数,可以帮助您使用类名包含/需要文件。

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT . “/classes/” . $class_name .“.php”;
}

它在 PHP 7.2.0 中已弃用,为此建议使用spl_autoload_register。


答案 2

什么是自动加载?

每次你想在PHP项目中使用一个新类时,首先你需要包含这个类(使用包含或需要语言构造,没错这不是函数)。但是,如果您定义了__autoload函数,则包含将自行处理。

include "classes/class.Foo.php";
 
$foo = new Foo;
$foo->start();
$foo->stop();

基本自动加载示例

function __autoload($class_name) 
{
    require_once $DOCUMENT_ROOT."classes/class.".$class_name.".php";
}
 
$foo = new Foo;
$foo->start();
$foo->stop();

PHP 官方

其他

更新

PHP 5 引入了魔术函数 __autoload() 当您的代码引用尚未加载的类或接口时,会自动调用该函数。

该功能的主要缺点是您只能提供一台自动加载机。PHP 5.1.2 引入了它,它允许您注册多个自动加载器函数,将来该函数将被弃用。__autoload()spl_autoload()__autoload()

引入使程序员能够创建自动加载链,这是一系列可以调用的函数来尝试加载类或接口。例如:spl_autoload_register()

<?php
function autoloadModel($className) {
    $filename = "models/" . $className . ".php";
    if (is_readable($filename)) {
        require $filename;
    }
}

function autoloadController($className) {
    $filename = "controllers/" . $className . ".php";
    if (is_readable($filename)) {
        require $filename;
    }
}

spl_autoload_register("autoloadModel");
spl_autoload_register("autoloadController");

推荐