J'utilise Laravel 9 et j'ai une requête qui contient :
array
Ainsi, le paramètre SEASON
peut être array
array
ou null
J'ai deux classes, une pour la fonctionnalité SEASON
et une pour la fonctionnalité EXPIRY
, toutes deux issues de l'extension Repository
Les deux ont une méthode appelée execute
qui renvoie un tableau
Référentiel de classes abstraites { fonction publique abstraite execute() : array ; } L'expiration de la classe étend le référentiel { fonction publique exécuter() { return ['La requête contient un paramètre d'expiration et les comportements saisonniers sont effectués'] ; } } La saison de classe étend le référentiel { fonction publique exécuter() { return ['La requête contient le paramètre de saison et les comportements d'expiration sont effectués'] ; } }Si ma requête contient SEASON, je souhaite appeler la méthode d'exécution de la classe Season, ou si ma requête contient Expiry, je souhaite appeler la méthode d'exécution d'expiration. Ou appelez-les et fusionnez les retours d'exécution dans un tableau afin que je puisse obtenir les résultats.
['La demande contient un paramètre d'expiration et les comportements saisonniers sont effectués', 'La demande contient un paramètre d'expiration et les comportements d'expiration sont effectués'];Voici ce que j'ai essayé dans le contrôleur :
amorçage de la fonction publique ($data) { $parseTopics = Helper::parseTopicsRequest(); $basicProgram = nouveau BasicProgramRepository(); $seasonalProgram = new SeasonalProgramRepository($parseTopics['SEASONAL']); $object = count($parseTopics['SEASONAL']) $seasonalProgram : $basicProgram; // Polymorphisme return $object->execute(); }Question 1 : Je ne sais pas si je dois utiliser ceci ou quelque chose de similaire pour résoudre mes besoins :
$employe = new Program(new BasicProgramRepository());Résultats attendus : Le résultat attendu dépend de la disponibilité ou non des paramètres de saison et de l'heure d'expiration. Ce que je veux réaliser, c'est utiliser un comportement différent (méthode d'exécution)
Si vous souhaitez mettre en œuvre une approche polymorphe, il est préférable de créer un référentiel ou quelque chose juste pour gérer cette logique.
Ceci est un exemple.
Vous pouvez l'appeler ainsi.
Cette méthode ne fonctionne qu'avec les valeurs spécifiées par vos paramètres. Si les résultats de retour de la classe Saison et de la classe Expiration sont quasiment les mêmes, il est préférable de les gérer sur des traits. (c'est-à-dire $pattern dans l'exemple de code)
Essayez-en.
J'ai lu les commentaires, alors suivez..
Par exemple, il préfère simplement obtenir le résultat de getResult(). Par conséquent, certains modèles et tant de logique ne doivent pas être écrits sur getResult();
Si vous utilisez des traits, voici un exemple. Tout d’abord, vous devez créer la classe de comportement de gestion.
behaviour.php