[PHP-users 31272] オーバーライドでのメソッドの拡張方法
Shindo
shindo @ atsystem.jp
2007年 1月 18日 (木) 19:27:46 JST
お世話になっております。進藤と申します。
PHP-4.4.4 でメソッドの拡張が思うようにならないので教えてください。
以下のソースを実行すると「実行結果」の様になります。
希望としては、class foo の中では $this は、fooであってほしいのです。
つまり、foo::mainからはfoo:subを実行してほしいのですがbar:subが実行され
てしまいます。
1)これは正しい動作なのでしょうか。それとも、何か方法があるのでしょうか。
2)PHP5のselfは、このあたりのスコープ定義に使えるのでしょうか。
手元にPHP5の環境がないので実験していません。
以上2点、よろしくお願いします。
ソース
<?php // class.php
class foo
{
function sub()
{
echo "My name is foo::sub.\n";
}
function main()
{
echo "My name is foo::main.\n I am calling to foo::sub.\n";
$this->sub();
}
}
class bar extends foo
{
function sub()
{
parent::sub();
echo "My name is bar::sub.\n";
}
}
$obj = new bar;
$obj->main();
?>
実行結果
% php -f class.php
My name is foo::main.
I am calling to foo::sub.
My name is foo::sub.
My name is bar::sub.
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
進藤寿則@アットシステム _/_/
e-mail shindo@atsystem.jp _/
PHP-users メーリングリストの案内