當我運行下面的代碼,我得到B
預期:有沒有辦法在PHP中繼承ffmpeg_movie類?
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
究竟這是怎麼回事,有沒有解決辦法?
這不僅僅是get_class函數的bug。 'B'類方法也不可訪問(請參閱更新的問題)。 –