[PHP-users 19579]Re: インスタンスの生成無しで利用するクラスメソッド内から、同クラスの他メソッド・プロパティを利用する方法について
komura
komura @ ma9.seikyou.ne.jp
2003年 12月 25日 (木) 17:36:48 JST
komura です。
関数の使い方としては、使用目的が違っていますので、全くお薦めはしませんが、
参考までに、ということで投稿します。
On Thu, 25 Dec 2003 14:38:13 +0900
yuji koga <koga-y @ mcp-net.com> wrote:
> userクラスが参照するテーブルはuser_tbl、goodsクラスが参照するテーブルは
> goods_tblと、命名規則は合わせておりますので、もしここで子クラスの
> クラス名を得ることさえできれば、実はこの部分すら親クラス内に
> 書けてしまうのでは?と淡い期待を抱いていたのです。
PHP 4.3.0 以降であれば(PHP 4.3.4 で確認)、以下のように
debug_backtrace() を使用することで呼び出し元の子クラスの名前が取得
できるようです。
class A {
var $tableName;
function count() {
$array = debug_backtrace();
// print_r( $array );
echo $array[0]['class'] . "\n";
}
}
class goods extends A {
var $tableName = 'goods_tbl';
}
class user extends A {
var $tableName = 'user_tbl';
}
goods::count();
user::count();
// 結果(PHP 4.3.4)
goods
user
ただし、PHP5 beta3 で確認したところ、以下のように違う結果になります。
a
a
debug_backtrace() が返すクラス名はどのような結果になるのかについては
マニュアルを見た限りでは分かりませんので、PHP のバージョンが
上がったときに、問題になる可能性があります。
--
komura <komura @ ma9.seikyou.ne.jp>
PHP-users メーリングリストの案内