54

PHPのオートロードとは何ですか?

4

4 に答える 4

39

これは、オートロードの使用法について役立ちます。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 が推奨されます。

于 2010-08-31T09:10:37.493 に答える
37

オートローディングとは?

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公式

他の

アップデート

PHP 5 では、まだロードされていないクラスまたはインターフェイスをコードが参照するときに自動的に呼び出される魔法の関数 __autoload() が導入されました。

この関数の主な欠点は、__autoload()オートローダーを 1 つしか提供できないことです。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");
于 2016-01-14T19:59:19.543 に答える
29

公式ドキュメントは次のとおりです。http://php.net/autoload

要するに、クラスの検索パスを定義できるようにするだけなので、それらを含むファイルを手動で含める必要はありません。

関数名や明らかなキーワードをアドレスに追加するだけで、php.net を検索する習慣を身に付けることをお勧めします。それがphp.net/autoloadを見つけた方法です。そのくらい便利です。

于 2010-08-31T09:07:58.430 に答える