クラスが定義されたPHPファイル(実行時)を見つける 質問する

クラスが定義されたPHPファイル(実行時)を見つける 質問する

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

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

/path/to/class/definition.php

( を使用して、get_included_files())これまでに含まれているすべてのファイルのリストを取得し、それらをすべて手動で解析できることはわかっていますが、1 回の試行で大量のファイル システム アクセスが必要になります。

また、この情報をどこかにキャッシュする __autoload メカニズムに追加のコードを記述できることに気づきました。ただし、私が考えている状況では、既存の __autoload を変更することは禁止されています。

これを実行できる拡張機能について聞くのは興味深いですが、最終的には「標準」インストールで実行できるものが欲しいです。

ベストアンサー1

試すReflectionClass

例:

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

falseファイル名が見つからない場合 (ネイティブ クラスなど) に返されます。

おすすめ記事