1. ホーム
  2. php

[解決済み] クラスが定義されたPHPファイルを(実行時に)検索する

2022-08-22 20:02:11

質問

特定のクラス(または関数)が定義されたPHPファイルを見つけることができるPHPのリフレクション/イントロスペクション/マジックはありますか?

言い換えれば、私はPHPクラス、またはインスタンス化されたオブジェクトの名前を持っています。 私はこれを 何か (関数、Reflection クラスなど) に渡して、クラスが定義されているファイルシステムのパスを返したいのです。

/path/to/class/definition.php

を使うことができることに気づきました。 get_included_files()) を使用して、これまでに含まれたすべてのファイルのリストを取得し、それらをすべて手動で解析することができますが、これは1回の試行のために多くのファイルシステムにアクセスすることになります。

また、この情報をどこかにキャッシュする __autoload 機構にいくつかの追加のコードを書くことができることを理解しています。 しかし、既存の __autoload を修正することは、私が考えている状況では、制限されています。

これを行うことができる拡張について聞くことは興味深いことですが、私は最終的に "ストック" インストール上で実行できるものが欲しいです。

どのように解決するのか?

トライ ReflectionClass

class Foo {}
$reflector = new \ReflectionClass('Foo');
echo $reflector->getFileName();

これは、以下を返します。 false が見つからない場合、例えばネイティブ・クラスの場合。