1

house.php というページと、house.class.php 内のクラスがあります。house.php でそのクラスのインスタンスを作成すると、機能します。次に、chair.php ファイルと、house.class.php で House を拡張するクラス Chair を作成します。そのクラスはどこに置くべきですか?spl_autoload_register は、その名前がファイルと同じではないため、私のクラスを見つけられません。関数 AutoloadClass を改善するにはどうすればよいですか? chair.class.php を作成し、house.class.php で require を使用する必要がありますか?

spl_autoload_register(null, false);
spl_autoload_extensions('.php, .class.php');
function AutoloadClass($class){
    $filename = $class.'.class.php';

    if (!file_exists($filename))
        {
            return false;
        }
        include $filename;
    }

spl_autoload_register('AutoloadClass');

ありがとうございました

4

1 に答える 1

1

呼び出しspl_autoload_extensionsているので、手動で追加する必要はありません.class.phpspl_autoload_registerさらに、引数なしで呼び出すこともできます。その後、http://de2.php.net/manual/en/function.spl-autoload.phpで動作します。これはそのままで動作するはずです:

set_include_path(__DIR__);
spl_autoload_extensions('.php,.class.php');
spl_autoload_register();

spl_autoload拡張子のチェックを行います。spl_autoload_extensionsそれ以外の場合は、すべての拡張機能を自分で確認する必要はありません。

直面する可能性のある別の問題は、クラス名が大文字で、ファイル名が小文字であるということです。クラス名とファイル名が一致するように、PSR-0標準を使用します。だから追加しないでください.class.php

House -> House.php
Chair -> Chair.php
于 2013-07-21T12:39:23.280 に答える