当我运行以下代码时,我得到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
这里到底发生了什么,是否有解决方法?