0

私は学習目的で何らかの形のCMSを作成しようとしています。ここで、一連のクラスを特定のファイルに自動的に含める方法を知りたいと思います。必要なすべてのクラスを含む1行のコードを記述したいと思います。

<?php include(realpath($_SERVER["DOCUMENT_ROOT"])."/lib/php/session.inc.php");

Essentials::getDOCTYPE();
Essentials::getHeader();

これは私のインデックスファイルのトップです。そのセッションファイルを自動的に含めるにはどうすればよいですか?私が理解できることから、Joomlaの_JEXECはカスタムJoomlaセッションを定義し、その使用の直後に$ this-> baseURL()が使用されます。これは、何らかの形で使用されたクラスがあることを意味します。ただし、include( "myclass.php");はありません。

4

1 に答える 1

1

Joomlaファイルの_JEXECは、あなたが想像するほど賢いことは何もしません。これは、メインスクリプトのエントリポイント(index.php)内で定義される単なる定数です。次に、ファイルが直接アクセスされないようにするためのセキュリティ対策として、その存在が後続のファイルでテストされます。

_JEXECが定義されていない場合、index.phpを介してアクセスしませんでした-index.phpを直接要求した場合、またはmod_rewriteを介してindex.phpにサイレントにリダイレクト(書き換え)された場合、_JEXECが定義されます。他のファイルを直接実行すると、スクリプトは「直接アクセスは許可されていません」タイプのメッセージで終了します。

あなたが話している機能は、「php autoload」という単語に基づく検索で見つけることができると思います。これにより、クラスの名前を含む、定義したパターンに一致する名前のファイルを特定のフォルダーで検索する関数を作成できます。インスタンス化を試みますが、まだロードされていません。

于 2012-04-13T23:45:52.533 に答える