<< CSML(Charcoal Screen Markup Language) | main | CharcoalPHP 0.7.0リリース >>
include/require系ステートメントの戻り値を使って、どのファイルが実際に読まれたか知る
Tipsです。


includeするのにいちいちフルパスで読み込みたくない場合、include_pathを山のように定義してしまう場合があります(パフォーマンス上よくないそうな)。その場合、実際にどのソースファイルが読み込まれたのか分からなくなる場合があります。特に同名のソースファイルを複数扱うような場合(あんまりないとは思いますが)とか、読んでるのか読んでないのか分からないケース(笑)など、実際に読み込んだソースファイルの場所が分かると便利です。


マニュアルによるとinclude/require系のステートメントは読み込んだ先のソースファイルでreturnした値を戻り値として返します。 なら読み込むべきソースの最後でそのソースファイルのパスを返してやれば実際に(エラーなく読み込まれた場合は、ですが)読み込まれたパスをコールした側で取得できるはず。


ソースはこんな感じで。


[/var/htdocs/hoge.php :読み込まれる方]

<?php

class Hoge
{
    ....
}

return __FILE__;          ....<--これを追加

?>
[/var/htdocs/main.php :読み込む方]
<?php

$ret = include( 'hoge.php' );

print $ret;           // --> /var/htdocs/hoge.php
?>
結果をログファイルなどに吐き出すようにすれば、幸せになれる?


XDebugとか入ってたらプロファイラで確認できるのでしょうが、ちょっとしたデバッグとかには有効かもしれません。

| comments(0) | trackbacks(0) | by stk2k
コメント
コメントする









この記事のトラックバックURL
http://devlog.sazysoft.com/trackback/872289
トラックバック