Dans ma classe, j'ai une méthode qui attend en tant que tableau, et ce tableau doit être utilisé différemment en fonction du type de collecte. Les articles de matrice doivent être des objets et je dois savoir quelle instance de classe ces objets sont.
Par exemple: dans le tableau ($ obj1, $ obj2), je dois vérifier l'instance de ces objets, quelle classe ils étaient. Créé à partir de. p>
ici Quelqu'un de code: p> ou peut-être: p> Je n'ai besoin que vérifier le type de collecte de ce tableau. Je sais que je peux y introduire, mais y a-t-il un meilleur moyen de le faire? P> P>
5 Réponses :
Si vous utilisez un tableau (pas objet) comme collection, vous n'avez pas d'autre choix, sauf pour vérifier les éléments de réseau. P>
La vérification de l'instance de vérification signifie passer par chaque type jusqu'à ce que vous atteigniez la bonne. Au lieu de cela, essayez ou, créez une interface avec un get_class ($ objet) code> et utilisez une instruction de commutation pour déterminer quoi faire ensuite. p>
getwateDeNeed () code> méthode et dans chacun des types d'objets correspondants, mettez-le en œuvre. De cette façon, chaque objet, peu importe ce qui est une instance de getwhaTraTeNeedinterface code>. Recherchez les «modèles de stratégie». P>
ouais .. je peux utiliser get_class alors
Il y a une autre façon d'y parvenir:
public function convertDataToInsert(ConvertibleDataCollection $dataCollection)
{
return $dataCollection->convert();
}
Veuillez ajouter quelques explications supplémentaires à votre réponse, de sorte que d'autres puissent en apprendre. Où dans tout ce code est le chèque caché?
Un collègue m'a montré un moyen facile de vérifier, si un tableau contient des instances d'une classe uniquement: Voici un exemple avec la sortie: https://3v4l.org/1ivg9 p> p>
Utilisez un filtre de matrice:
if (count(array_filter($data, function ($entry) {
return !($entry instanceof CriterioDigital);
})) > 0) {
throw new \DomainException('an array of CriterioDigital must be provided');
}
Non, pas de meilleure façon que vous montrez du code avec certaines données d'entrée + ce que vous avez essayé jusqu'à présent + ce que vous attendiez + où vous avez bloqué.Merci.
Si vous construisez vous-même les collections et pouvez vous assurer que tous les objets d'une collection sont la même classe, testez simplement le premier
Tout @Analivetodie a dit. J'ai bownvoché jusqu'à ce que la question devienne responsable.