7

PHP スクリプトで include() を頻繁に使用する習慣があります。それが良いアプローチかどうか知りたいです。インクルードを多用するのは、コードの見栄えを良くして、将来性のあるプログラミングを実現できるようにするためです。

4

3 に答える 3

6

include を使用する代わりに、 autoloadingを調べることをお勧めします。

于 2012-04-24T15:37:12.480 に答える
5

PHPのオートローディング機能を利用する

例:

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

新しいクラスをインスタンス化するときはいつでも。PHP は、1 つの引数、つまりクラス名を指定して __autoload 関数を自動的に呼び出します。以下の例を検討してください

$user = new User():

ここでユーザーオブジェクトをインスタンス化すると、オートロード機能が呼び出され、同じディレクトリからファイルをインクルードしようとします。(上記のオートロード機能を参照)。クラスを自動ロードする独自のロジックを実装できるようになりました。存在するディレクトリに関係なく。詳細については、このリンクhttp://in.php.net/autoloadを確認してください。

更新: @RepWhoringPeeHaa、あなたはそれが正しい仲間だと言いました。spl_autoload を使用すると、単純な自動ロード機能よりも多くの利点があります。私が見る主な利点は、複数の関数を使用または登録できることです。

例えば

function autoload_component($class_name) 
{
    $file = 'component/' . $class_name . '.php';
    if (file_exists($file)) {
        include_once($file);
    }
}

function autoload_sample($class_name)
{
    $file = 'sample/' . $class_name . '.php';
    if (file_exists($file)) {
        include_once($file);
    }
}
spl_autoload_register('autoload_component');
spl_autoload_register('autoload_sample');
于 2012-04-24T15:38:23.993 に答える
5

オブジェクト指向を開発していて、クラスごとにファイルがあるinclude場合は、クラスが使用されているがまだロードされていないときに自動的に呼び出すオートローダー関数を実装することを検討してください。

$callback = function($className) {
    // Generate the class file name using the directory of this initial file
    $fileName = dirname(__FILE__) . '/' . $className . '.php';
    if (file_exists($fileName)) {
        require_once($fileName);
        return;
    }
};

spl_autoload_register($callback);
于 2012-04-24T15:38:46.723 に答える