1

私は2つのファイルを持っていclass.inc.phpますindex.php.

class.inc.phpには Myclass といくつかの関数が含まれており、index.phpファイルは から関数を吐き出しますclass.inc.php

ここで、ファイルをインクルード/要求する関数を作成する必要があります。その関数は、class.inc.php ではなく index.php で実際にそのファイルを要求する必要があります。

はい、ファイルを関数に配置してそのように呼び出すことができることはわかっていますが、将来の MVC オーバーライドのためにファイルに保持する必要があります。可能であれば、ファイルを index.php に直接含めたくありません。これを行う方法はありますか?

私のindex.phpでは、これを行うことができるはずです:

Myclass::include(PARAMS);

これには、別の場所にあるファイル名 params.php が含まれている必要があります。

私はclass.inc.phpでこれを試しました

abstract class Myclass {
    static function load($filename){
        require_once $filename;
    }
}

そしてこれで

index.php

Myclass::include(PARAMS);

しかし、params.php の変数は、class.inc.php にあるように見えるため、index.php には表示されません。

4

1 に答える 1

1

includerequireおよび友人は、基本的にファイルの内容をコピーしてその場所に貼り付けたかのように振る舞います。したがって、それらを関数で実行すると、ファイルを単独で実行するとグローバルになる「裸の」変数は、代わりにその関数に対してローカルになります。

一般的に言えば、現代の PHP コードでの答えは、単純にグローバル変数を使用しないことです。ファイルには、関数のみを含めるか、名前空間とクラスのみを含め、すべての変数をそれらにラップする必要があります。

ただし、グローバル変数が本当に必要な場合はglobal、インクルード関数またはインクルード ファイルの先頭でキーワードを使用できます。

したがって、たとえば、インクルードされたファイル$configが他の場所にアクセスする必要がある変数を定義している場合、ファイルの先頭に書いて、 / itglobal $config;のときに現在のスコープからプッシュすることができます。includerequire

于 2013-03-29T00:41:43.777 に答える