J'utilise un framework MVC orienté objected en PHP (Kohana) et j'ai en quelque sorte mélangé quelques techniques pour faire des choses. Le problème est que je ne suis pas sûr de savoir comment garder les choses propres sans appeler beaucoup et beaucoup de requêtes par page.MVC Object Oriented Techniques - Comment minimiser les requêtes et maintenir la flexibilité?
Pour illustrer mon exemple, je vais imaginer que je suis la conception d'un débordement de pile comme site:
Je classe de modèle pour une question (question_model
) ainsi qu'un pour finder question (question_finder_model
). Question_model contient principalement des variables pour stocker les données de question, des tableaux d'objets de réponse et quelques méthodes de fabrication. Quelque chose comme:
class question_model {
public $question_id,$question_title,$question_body,$answers = array();
}
Les conteneurs finder question un tableau de question_model objets ainsi qu'un tableau de ids question. Le tableau d'identifiants est rempli par les méthodes find de la classe et utilisé par d'autres méthodes. Quelque chose comme:
class question_finder_model {
private $question_ids = array();
public $questions = array() ; //
function public find_questions() {
// executes some SQL to find a list of projects
// Create a new question_model object for each question and store in $questions
// for each of these questions store the id in $questions_ids
}
function public get_answer_info() {
// using all the question ids stored in $question_ids:
// find information about the answers
}
}
J'utiliser cette méthode pour tous mes modèles, par exemple mon modèle d'utilisateur contiendra un tableau d'objets de questions. Le problème est qu'il devient assez difficile à gérer, par exemple ma question contient de nombreuses réponses et chaque réponse peut contenir de nombreux commentaires et ainsi de suite. Comment puis-je remplir tous ces objets sans avoir plusieurs requêtes. Je veux dire que la méthode la plus simple serait de parcourir simplement mon tableau d'objets questions et d'appeler une fonction stockée dans la classe de questions qui obtient les informations de réponses pour cet objet. Mais alors j'appellerais 10 ou 100 de requêtes par page. Je m'excuse si tout cela est brouillé car le problème est assez difficile à articuler. Toute aide est appréciée parce que perhpas tout mon modèle est défectueux.
"Enfin, ne vous laissez pas raccrocher en essayant d'obtenir tous les cas." <- C'est un bon conseil. – johnny