Php ';重建';扩展类中的父对象-这是可怕的代码吗?

Php ';重建';扩展类中的父对象-这是可怕的代码吗?,php,oop,Php,Oop,我有一个班级播放曲目,我想扩展班级歌曲 当我构建歌曲时,我会传递一组数据,如艺术家、标题等 当我构建PlayTrack时,我希望它拥有所有歌曲的方法以及它引入的新方法 但我还想在构造器中传递特定的歌曲 所以我要这样做: class Song { function __construct( $song_data ) { $this->_data = $song_data; // etc } } 然后这个。别开枪 class Playlis

我有一个班级播放曲目,我想扩展班级歌曲

当我构建歌曲时,我会传递一组数据,如艺术家、标题等

当我构建PlayTrack时,我希望它拥有所有歌曲的方法以及它引入的新方法

但我还想在构造器中传递特定的歌曲

所以我要这样做:

class Song {

    function __construct( $song_data ) {

        $this->_data = $song_data;
        // etc
    }
}
然后这个。别开枪

class PlaylistTrack extends Song {

    function __construct( $song ) {

        // call the song's constructor again in the context of this class
        // to give access to its methods.
        parent::__construct( $song->_data );

         // other PlaylistTrack-specific material to go here
     }
}

至少可以说,这感觉很奇怪。可以吗?有替代方法吗?

扩展类时,构造函数会自动继承。如果您不打算将功能添加到现有构造函数中,则不需要对其进行变形


如果您确实想向它添加功能,那么您所做的一切都很好。

如果此
父项::\uu construct()
调用是
播放曲目中
\uu construct()
的唯一内容,那么您为什么要实际添加它
PlayTrack
已经有了一个构造函数,它是从
Song
@Tadeck继承而来的。如果没有,其他东西会在更新后发生-更新示例以显示它改变了事情。在本例中,这是完全正确的(我甚至认为调用父类的构造函数是最佳实践)。