2017-04-01 1 views
0

すべての呼び出し元クラスを取得するには?PHP - すべての呼び出しクラスを取得するには

私が試した:

function __autoload ($class){ 
require $class; 
debug_print_backtrace(); 
} 

$obj1 = new Foo(); 
$obj2 = new Foo(); 
$obj3 = new Foo(); 

結果:

#0 __autoload(Foo) called at [/var/www/index.php:8] 

しかし、私は結果必要 - 私はすべてのコールをリストする必要があります:(

#0 __autoload(Foo) called at [/var/www/index.php:8] 
#0 __autoload(Foo) called at [/var/www/index.php:9] 
#0 __autoload(Foo) called at [/var/www/index.php:10] 

誰も助けてくださいありがとうございましたか? 。

+2

Autoloadは 'Foo'クラスに対して__once__だけを実行します。 –

+0

** __ construct **メソッドを使用して電話を受けることができます –

+0

もっと良い解決策が必要です。ありがとうございます。 –

答えて

0

probレームはにバックトレースを印刷していないということです。を呼び出すとに印刷されます。そして、あなたはそれを一度だけロードする必要があります(呼び出される最初の時)。

あなたが呼び出しにそれを表示したい場合は、

class Foo 
{ 
    public function __construct() 
    { 
     // your other construct code 
     // if you didn't have one, maybe a parent::__construct() 
     debug_print_backtrace(); 
    } 
} 

は今、あなたはあなたがクラスのインスタンスを作るバックトレース毎回取得するように、あなたのFooクラスのコンストラクタに追加する必要があります。

これは、すべてのクラスで行う必要があることを意味しますが、これは面倒な作業ですが、できることは最善です。たぶんあなたがしようとしているものとは異なる解決策がありますが、この要件の理由を追加していないので、他の解決策を見つけるのは難しいです:)

+0

私はすでにそれを書いています、私はすべてのクラスをキャプチャする必要があります。各クラスを変更することなく;) –

関連する問題