5

次の構造を持つ PHP アプリケーションがあるとします。

/
    lib/
        mylib.php
    web/
        index.php // includes "mylib.php" with: require_once __DIR__ . "/../lib/mylib.php"

同じソースベースで同時に次のケースをカバーしようとしています:

  1. No Phar : DocumentRootweb/を指し、すべてのリクエストをindex.phpにリダイレクトして、アプリケーションをそのまま使用できること。
  2. Minimal Phar : web/index.phpのみを含み、 web/application-minimal.pharとして保存されるphar を生成できること。
  3. Full Phar : libディレクトリとweb/index.phpの両方のコンテンツを含み、web/application-full.pharとして保存されるphar を生成できること。

phar ファイルの場合、すべての要求は phar ファイル自体にリダイレクトされます。

*require_once* を変更せずに、これらすべてのユースケースを達成することは可能ですか?

*web/index.php からlib/mylib.phpをインクルードするために、さまざまなアプローチ (相対/絶対) を試しました。また、 Phar::mount()でいくつかのトリックを試しました。私の試みはどれも成功しませんでした。

4

1 に答える 1

1

インクルードパスに頼るだけです。

してはいけないこと:

require_once __DIR__ . "/../lib/mylib.php";

しかし:

require_once "mylib.php";

スクリプトの先頭にインクルード パスを設定します。

set_include_path(__DIR__ . '/../lib/' . PATH_SEPARATOR . get_include_path());
于 2013-03-11T08:21:35.140 に答える