Hey,
Si on imagine une class "Order" qui représente une commande e-commerce ; cette classe exploite une classe "Packaging" qui représente l’emballage à utiliser pour expédier cette commande (le carton ou l’enveloppe adéquate par exemple).
class Order {
private $packagingId;
public function getPackaging() : Packaging
{
return new Packaging($this->packagingId);
}
}
Est-il pertinent de "mettre en cache" le Packaging au sein d’un attribut de la classe, pour l’utiliser plus rapidement les prochaines fois ?
class Order {
private $packagingId;
private $packaging;
public function getPackaging() : Packaging
{
if (is_null($this->packaging)) {
$this->packaging = new Packaging($this->packagingId);
}
return $this->packaging;
}
}
Cet exemple me pose 2 grandes questions :
1) Je me demande si cette idée de "mise en cache" est une bonne pratique ou non.
2) Plus largement, je me demande si la manière d’utiliser et d’imbriquer ces 2 class (Order et Packaging dans l’exemple) est "POO compliant" ou si je m’y prends mal. J’ai parfois l’impression qu’il faudrait mieux faire autrement, mais je ne vois pas comment.
Je me torture un peu là-dessus parce que j’aimerais améliorer mon code OO.
Merci d’avance pour vos lumières !