Когда я запускаю следующий код я получаю B
, как и ожидалось:Есть ли способ наследовать класс ffmpeg_movie в PHP?
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. Методы класса «B» также недоступны (см. Обновленный вопрос). –