Question

Aujourd'hui, au travail, quelqu'un a essayé de me convaincre que:

{$obj->getTableInfo()}

convient pour smarty / mvc / templating car il utilise une méthode object. J'ai fait valoir que, parce qu'elle appelle la base de données, elle n'a pas sa place et devrait se trouver dans le contrôleur (nous n'utilisons pas réellement MVC). Ai-je bien compris les séparations logiques utilisées dans MVC et en général dans les modèles? Ou y a-t-il quelque chose qui me manque?

Était-ce utile?

La solution

Vous avez raison. Il a tort.

Les appels de base de données, quelle que soit leur forme, doivent résider dans le contrôleur si vous souhaitez exécuter MVC correctement.

Évidemment, les gens pissent partout ce qu'ils devraient et font des choses comme ça, mais ce n'est pas la bonne façon.

Autres conseils

Eh bien, il n'y a pas de "fonctionnaire" règles ou quoi que ce soit, mais je pense que quelque chose comme ça appartient au contrôleur. Je ne fais rien dans mon code d'affichage, à l'exception des variables d'affichage, rien de plus complexe qu'une boucle si ou foreach est autorisée. Certainement pas d'appeler des fonctions qui accèdent à la base de données. Tout cela devrait être chargé par le contrôleur, la vue ne devrait décider que de l'afficher ou non.

Dépend vraiment de son contexte et de sa portée.

$ obj est-il le contrôleur ou la couche modèle? Cela devrait indiquer si, à mon avis, cela est valable ou non.

En réponse à la lecture des autres réponses.

Le nom de la fonction en elle-même est considéré comme une simple méthode d’acquisition. Il peut faire appel à la base de données via une couche de contrôleur. Ce que je dirais est ok. Surtout s'il utilisait une forme de cache en mémoire. (c’est-à-dire que le getter est le setter puisque vous ne voulez le mettre en cache que s’il est utilisé une fois.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top