Ho una classe base chiamata ProductRepository e ci sono altre classi che la estendono; come PushProductRepository o SocialProductRepository.
class ProductRepository implements ProductRepositoryInterface
{
private $product;
public function __construct(Product $product)
{
$this->product = $product;
}
public function create($name, $language, $type)
{
$this->product->create([
'name' => $name,
'language' => $language,
'type' => $type
]);
}
}
Come puoi vedere, esiste un parametro tipo nella funzione di creazione. Potrebbero essere i valori come "push" o "social". Prenderà il valore dalle classi che lo estendono. Invece di inviarlo come parametro; Voglio avere un approccio diverso. Creerò una proprietà in ProductRepository come type e userò $ this- > type nella funzione create.
Ma voglio essere sicuro che ogni classe che estende ProductRepository dovrebbe impostare questa proprietà nella sua classe (probabilmente nel suo costruttore)
Come posso essere sicuro che ogni classe che estende ProductRepository imposterà type nel suo costruttore? C'è un modo migliore per raggiungere questo obiettivo? Questo viola qualcosa? Se è così, come posso prevenirlo?