Maison >développement back-end >tutoriel php >Mappeur de données ou couche de service : qui doit gérer les conditions dans les requêtes complexes ?
Lors de la construction de requêtes complexes, la question se pose de savoir si le mappeur de données ou la couche de service doit gérer les conditions. Cette énigme découle du désir de trouver un équilibre entre simplicité et maintenabilité.
Le modèle de mappeur de données préconise une interface minimaliste, avec des méthodes comme fetch(), save() , et remove() gérant les opérations de base. Les conditions sont encapsulées dans l'objet de domaine lui-même, garantissant une interface de mappeur de données propre.
$user = new User; $user->setName('Jedediah'); $mapper = new UserMapper; $mapper->fetch($user); if ($user->getFlags() > 5) { $user->setStatus(User::STATUS_LOCKED); } $mapper->save($user);
Cette approche garantit que le mappeur de données reste concentré sur sa fonctionnalité principale, tout en facilitant également les conditions de requête complexes via l'objet de domaine. Cependant, cela nécessite une méthode publique pour récupérer les données de l'objet de domaine à des fins de récupération.
Dans cette approche, la couche de service assume la responsabilité des conditions d'analyse. Cela simplifie le mappeur de données, en lui laissant une méthode générique get() qui accepte plusieurs conditions. Cependant, cela peut entraîner une fuite de la logique de domaine hors du mappeur de données, car la couche de service gérerait des requêtes complexes.
$bookService->getByAuthorAndPublisher($authorName, $publisherName);
Le choix entre ces approches est subjectif, reflétant la préférences du développeur. Cependant, quelques facteurs clés à prendre en compte incluent :
En fin de compte, l'approche optimale dépend du contexte spécifique et des priorités de l'équipe de développement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!