特定のタイプが何であるかを知る前に、オブジェクトをインスタンス化する理由があるシステムがあります。たとえば、最終的なクラスが「book」か「cd」かを知る前に、クラス「media」をインスタンス化したいとします。
これが私たちがしていることです。「メディア」オブジェクトをインスタンス化し、それがどのタイプのメディアであるかがわかったら、「本」をインスタンス化して、メディアオブジェクトを渡します。
class Book extends Media
{
public function __construct( $parent )
{
$vars = get_object_vars( $parent );
foreach( $vars as $key => $value )
$this->$key = $value;
}
}
//elsewhere
$item = new Media();
$item->setPrice( $price );
//other code, figure out the item type
$item = new Book( $item );
このようなことをするためのより良い方法はありますか?これは動的な多型ですか?