2017-08-26 4 views
1

Pour un projet scolaire, je programme une application de gestion de compte bancaire où j'ai une procédure comme celle-ci: tentative de connexion de l'utilisateur. Si cela réussit, je charge toutes ses données dans un objet Client principal.Charger les données de l'utilisateur après la connexion

Cela implique une cascade de Hydratation: Tout en se hydratantes, un objet principal Client lancer l'Hydratation d'objet d'autres qui sont stockés objets à l'intérieur des tableaux qui Client contient. Par exemple. la classe Client contient un attribut bankAccounts qui est un tableau d'objets BankAccount qui contient un attribut operations qui est un tableau d'objets Operation et ainsi de suite ... enfin, cet objet Client est stocké à l'intérieur de $_SESSION.

J'apprends encore la POO et c'était ma première tentative pour structurer mes cours et les utiliser. Maintenant, je me demande si c'est bon de faire les choses comme ça? Si je compare à d'autres projets que j'ai vus, ils semblent demander leurs données en utilisant des requêtes SQL chaque fois que cela est nécessaire. Par exemple. Si l'utilisateur visite la page affichant les comptes bancaires, les données seront demandées à la base de données. Donc, si cet utilisateur l'actualise 50 fois, il répètera ces requêtes 50 fois. Ce que j'aime à mon sens, c'est qu'une fois que le client est connecté, toutes les informations dont j'ai besoin sont facilement accessibles et organisées, je n'ai plus besoin de les demander. D'un autre côté, si certaines données sont modifiées, supprimées, je devrai mettre à jour mon objet client. Aussi son besoin de plus de performance lorsque l'utilisateur se connecte.

Quelles sont les bonnes pratiques à ce sujet? Est-ce que ce que je fais est commun? la bonne chose à faire ? éviter ?

Répondre

2

La mise en cache de la base de données est la bonne façon de procéder rapidement.

La base de données vous permet de mettre en cache vos requêtes sous forme de fichiers texte pour la charge de base de données réduite, mais

nécessité de prendre soin des données dynamiques.

  1. Si vous vous connectez et enregistré le résultat dans un fichier texte.
  2. Entre ces informations utilisateur modifiées par un autre panneau.
  3. Ensuite, vous ne pouvez pas afficher les données dynamiques pour cet utilisateur.
  4. Vous pouvez gérer cela à chaque fois que cette information d'utilisateur se met à jour d'une autre manière, alors vous voudrez supprimer les fichiers cache associés à cet utilisateur en utilisant le nom de fichier unique.

logique de fonction d'écriture de capture de base de données

public function write($userid, $object) 
{ 
     $filename = $userid; 
     if (! is_dir($dir_path) && ! @mkdir($dir_path, 0750)) 
     { 
      return FALSE; 
     } 
     if (write_file($dir_path.$filename, serialize($object)) === FALSE) 
     { 
      return FALSE; 
     } 
     chmod($dir_path.$filename, 0640); 
     return TRUE; 
} 

S'il vous plaît consulter ce CI DB_cache pour POO et la logique de base CI DB_cache.php

logique de base est commune afin que vous puissiez prendre connaissance d'ici: CI database caching guide