2012-04-13 18 views
0

私は学習目的でCMSのいくつかの形式を作ろうとしています。今度は、特定のファイルに一連のクラスを自動的に組み込む方法を知りたいと思います。私はそれが欲しいすべてのクラスを含むコードの1行を記述したいと思います。Joomlaの_JEXECのような機能

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

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

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

答えて

1

Joomlaファイルの_JEXECは、あなたが想像するほど巧妙ではありません。これは単にメインスクリプトのエントリーポイント(index.php)内で定義される定数です。そのファイルの存在は、ファイルへの直接アクセスを防ぐためのセキュリティ上の予防措置として、後続のファイルでテストされます。

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

「php autoload」という単語に基づいて検索すると、名前を含むパターンに名前が一致するファイルを特定のフォルダ内で検索する機能を構築できますあなたがインスタンス化しようとしているクラスのうち、まだロードされていないもの。

+0

_autoload関数が面白そうだったので、私はそれを見つけました。助けてくれてありがとうございました。 –

関連する問題