2010-07-16 5 views
3

Je suis surtout un débutant de la POO, et je travaille dans CodeIgniter pour construire un ORM très basique (peut-être pour un usage futur - maintenant principalement pour l'apprentissage).Meilleure façon de diviser la grande classe en plus petits en PHP

À ce stade, j'ai une grande classe appelée ORM que mes modèles étendent. Ainsi, un modèle de widgets aura comme méthodes get() (qui obtient essentiellement toutes les lignes de la table « widgets »), et get_with_related(), etc.

Je voudrais partager cette classe en quelques petits ceux Peut-être si j'ai une classe ORM de base, et une classe 'reader' (qui a get(), etc.), une classe 'writer' (qui aurait update(), save(), etc.), et peut-être un classe d'utilitaires.

Quelle serait la meilleure façon d'y parvenir? Est-ce que je devrais juste inclure et instancier les classes de lecteur et d'auteur dans le constructeur de la classe ORM de base et l'employer comme ceci?

$widgets = new Widgets(); 
$all_widgets = $widgets->reader->get(); 

$widgets->writer->update('description', 'here is a new description', 357); 

Existe-t-il un terme que je peux utiliser pour trouver des façons d'organiser des cours comme ça?

+1

Ce n'est pas un forum BBCode, indentez votre code de quatre espaces (ou utilisez le bouton 101010) pour marquer le code comme du code. :) – deceze

+0

Oups - fixe. :) – sheldonbaker

Répondre

1

Je ne connais pas spécifiquement Codeigniter mais je ne pense pas qu'il soit nécessaire de le séparer en classes séparées en lecture/écriture. En fait, dans ce cas, cela pourrait effectivement être une mauvaise pratique car, dans la POO, un modèle est censé représenter une seule entité. Vous devriez google DAL (Database Abstraction Layer). Si vous avez un modèle Widgets, alors il est parfaitement possible d'avoir à la fois des getters et des setters. Mon point est que ce n'est peut-être pas la meilleure pratique dans votre cas juste pour se séparer en petites classes. Cela devrait toujours être axé sur des objectifs.

Questions connexes