2009-11-24 4 views
1

J'essaye de créer une nouvelle classe pour mon application web, en réécrivant mon code à partir de la programmation procédurale originale. Comme j'ai besoin de remplir mon objet en utilisant de nombreuses requêtes (complexes) différentes, et que cet objet sera stocké en session, j'ai décidé de créer une autre classe statique contenant toutes les longues requêtes.PHP - OOP - Stockage de gros objets à enregistrer en session

Est-il plus pratique de définir comme "statique" une fonction dans la même classe sans en créer une nouvelle? Mon but est d'avoir un objet aussi léger que possible ... thanx

+3

Est-ce moi ou cela n'a-t-il aucun sens? S'il vous plaît soyez plus précis. –

+1

Faites-vous ce qui équivaut à un objet "dieu". Si oui, vous voudrez peut-être reconsidérer. – dnagirl

Répondre

2

Il semble que vous puissiez combiner la fonctionnalité d'accès à la base de données avec une classe de logique métier. Lorsque je n'utilise pas de couche ORM et que je travaille avec des applications plus petites, je crée généralement une seule classe responsable de toutes les interactions avec la base de données. Cette classe contiendra des bits réutilisables de requêtes à appeler par des méthodes dans cette classe. Je déclare ces bits comme des attributs statiques privés. Cette classe ne stocke aucune donnée. Au contraire, il transmet simplement des données au script ou à la classe appelant. Pour réduire la consommation de mémoire, j'implémente cette classe en utilisant un modèle Singleton pour m'assurer que tout script qui a besoin d'utiliser cette classe utilise la même instance de la classe et n'alloue pas de mémoire supplémentaire. Comme la classe n'est pas utilisée pour stocker des données globales, les risques d'utilisation d'un singleton dans ce cas sont évités.

En outre, je vous conseille de ne pas trop vous soucier de la consommation de mémoire à moins que vous ne travailliez avec des ressources matérielles limitées et/ou un site très fréquenté.

+0

ok .. Vous avez concentré mon problème et répondu à ma question. Merci beaucoup – cesko80

0

Vous devez diviser votre domaine de problème dans les plus petites parties possibles et créer des classes en conséquence. Pas une seule 'grosse' classe censée gérer tout.

Chaque classe gère une partie spécifique du problème global que vous essayez de résoudre.

Je pense que vous trouverez cette approche plus facile à votre problème.

Tony

0

Essayez étant donné que toutes les tables de votre base de données est une classe et le décrire en php. La classe aura donc des méthodes pour sauvegarder, lire, mettre à jour et des méthodes statiques pour extraire un tableau d'objets de cette classe.

+0

Si vous utilisez cette approche, je recommande fortement d'utiliser un framework ORM tiers tel que Doctrine ou Propel. – jkndrkn

0

Je pense que ma question pourrait être réécrite comme: est une fonction statique (et tous ses membres) copiés dans un objet enfant sérialisé enregistré dans une session var? Je pense que cela n'a de sens que si je peux trouver des membres non statiques dans un objet ...