次のコードを実行するとB
、期待どおりになります。
class A {
public function __construct($file){}
}
class B extends A {
public function __construct() {
parent::__construct('test.flv');
}
}
$b = new B();
print get_class($b);
ただし、このコードのわずかに変更されたバージョンを検討してください(ここでffmpeg_movie
は、クラスはhttp://ffmpeg-php.sourceforge.netライブラリの一部です)。
class B extends ffmpeg_movie {
public function __construct() {
parent::__construct('test.flv');
}
}
$b = new B();
print get_class($b);
ffmpeg_movie
の代わりに戻りますB
。さらに、オブジェクトB
を使用すると、クラスで定義されたメソッドにアクセスできないことがわかります。$b
class B extends ffmpeg_movie {
public function __construct() {
parent::__construct('test.flv');
}
public function test() {
print 'ok';
}
}
$b = new B();
$b->test();
Fatal error: Call to undefined method ffmpeg_movie::test() in .../test.php on line 13
ここで何が起こっているのでしょうか。回避策はありますか?