2016-01-14 54 views
1

我想用Class Table Inheritance如何投放超實例子類的實例? (教義)

/** 
* @Entity 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="discr", type="string") 
* @DiscriminatorMap({"player" = "Player", "admin" = "Admin"}) 
*/ 
class User 
{ 
    // ... 
} 

/** @Entity */ 
class Player extends User 
{ 
    // ... 
} 

/** @Entity */ 
class Admin extends User 
{ 
    // ... 
} 

我的問題是:

如果我有User秒的採集,怎麼可能來檢查,其中一個是Admin和一個是Player。以及如何在此之後調用子類的方法?

回答

1

你怎麼弄到的Users集合?

主義實例化具體類PlayerAdmin取決於DiscriminatorColumn的值。你可以檢查你instanceof獲得該實體:

switch(true){ 
    $entity instanceof Player: 
     // do player's stuff 
     break; 
    $entity instanceof Admin: 
     // do admin's stuff 
     break; 
}