PHP には、特定のクラス (または関数) が定義されている PHP ファイルを見つけることができるリフレクション/イントロスペクション/マジックはありますか?
つまり、PHPクラスまたはインスタンス化されたオブジェクトの名前を持っています。これを何かクラスが定義されているファイル システム パスを返す (関数、Reflection クラスなど)。
/path/to/class/definition.php
( を使用して、get_included_files())
これまでに含まれているすべてのファイルのリストを取得し、それらをすべて手動で解析できることはわかっていますが、1 回の試行で大量のファイル システム アクセスが必要になります。
また、この情報をどこかにキャッシュする __autoload メカニズムに追加のコードを記述できることに気づきました。ただし、私が考えている状況では、既存の __autoload を変更することは禁止されています。
これを実行できる拡張機能について聞くのは興味深いですが、最終的には「標準」インストールで実行できるものが欲しいです。
ベストアンサー1
試すReflectionClass
- リフレクションクラス::getFileName— ファイル名を取得します
例:
class Foo {}
$reflector = new \ReflectionClass('Foo');
echo $reflector->getFileName();
false
ファイル名が見つからない場合 (ネイティブ クラスなど) に返されます。