什么是自动加载在PHP?

时间:2010-08-31 09:06:20

标签: php autoload

PHP中的自动加载是什么?

4 个答案:

答案 0 :(得分:29)

以下是官方文档:http://php.net/autoload

简而言之,它只允许您为类定义搜索路径,因此您不需要手动包含包含它们的文件。

我建议你养成一个习惯,只需在地址中附加功能名称或明显的关键字即可搜索php.net。这就是我发现php.net/autoload的方式。这样很方便。

答案 1 :(得分:28)

这对您使用自动加载有所帮助。 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 :(得分:25)

什么是自动加载?

每次要在PHP项目中使用新类时,首先需要包含此类(使用include或require语言构造,这是正确的,这不是函数)。但是,如果您定义了__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 Official

Other

更新

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

__autoload()功能的主要缺点是你只能提供一个自动加载器。 PHP 5.1.2引入了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");

答案 3 :(得分:1)

an __autoload() 

//function which is automatically called in case you are trying to use     
//a class/interface which hasn't been defined yet.

function __autoload($class_name) {
    include $class_name . '.php';
}