現在のファイルが「ルート」ファイル (apache によって要求された、または CLI 経由で実行された) であるかどうか、または含まれているファイルであるかどうかを判断する方法はありますか?
basename($_SERVER['SCRIPT_FILENAME']) != basename(__FILE__)
動作しますが、パス全体ではなくファイル名に基づいてのみ動作するため、ハックです。これを行うための、より優れた、よりエレガントな方法があればいいのにと思います。
コンテキストのビット
私はScaffoldという名前の PHP 5.4+ API フレームワークを作成しています。これは、 API ファーストの方法論に非常に役立ちます。現在の問題は、API ファーストアプリケーションを作成する多くの人が、アプリケーション内のクラスを介して API を使用することです。
$user = Scaffold::get('/users/nathaniel');
これを行う良い方法は、後で Web 要求をサーバーに送信するのではなく、実際の API である場合です。そうすれば、HTTP プロトコルのオーバーヘッドを回避できます。
私はそれを行う方法についてかなり良い考えを持っていますが、問題は、応答をブラウザーに送信する必要があるかどうか (エンコードされたものとすべて) を知る必要があるか、Scaffold::request
(またはそのエイリアスのいずれかScaffold::get
がそれらの1つだけです。
私がこれを行うことにした方法は、アプリケーションのルート ファイル (通常は apache 経由で要求されるファイル) が実際に要求されたか、または別のファイルに含まれているかを確認することです。