J'ai une classe qui contient une propriété privée qui est utilisé dans un grand nombre de méthodes de classes:Constructor alternative pour ce scénario
class MyClass
{
private $_myProperty;
public function __construct($myPropertyId)
{
$this->_initMyPropertyModel($myPropertyId);
}
public function initMyPropertyModel()
{
$this->_myProperty = new MyProperty($this->_myPropertyId);
}
public function methodA()
{
// do stuff with $this->_myProperty;
}
public function methodA()
{
// do stuff with $this->_myProperty;
}
public function methodC()
{
// do stuff with $this->_myProperty;
}
}
Le consructor prend un id pour un modèle et tente ensuite d'instancier un modèle de cet id. Le modèle est défini en tant que propriété, puis utilisé dans toutes les autres méthodes de classe. Le problème avec ceci est que l'instation du modèle peut mal tourner et que le modèle n'est pas correctement instancié, donc il y a un problème potentiel dans chaque méthode qui l'utilise.
Existe-t-il une meilleure façon de gérer ce code? Les deux autres options que je vois sont: 1. Forcer les clients à passer le modèle créé au lieu de l'ID 2. Avoir une vérification de null dans chaque méthode qui utilise le modèle 3. Lancez une exception du constructeur s'il n'est pas instancié correctement Mais je ne pense pas que ce soit du tout souhaitable.