Comment dois-je mettre en place mes cours?

voix
0

Je commence à travailler avec oop pour construire un site de données générées par l'utilisateur.

Il existe différents types de données provenant de mes cours. J'ai fonctions qui obtiennent une liste de données de la base de données, et les fonctions de simplement sélectionner un élément de ces listes. Par exemple

function Get_Article($aid); //Gets an article
function Get_Users_Articles($uid); //Gets a multidemsional array of the users 
                                   //articles
function Get_Latest_Articles(); //Self explanatory by now
function Get_Local_Articles($zip); //Gets articles written by local users
function Get_Local_Users($zip); //Gets all local users

function Get_All_Article_Comments($aid); //Gets a multidimensional array of the 
                                     //comments written for an article
function Get_Article_Comment($cid); //Gets a single article comment

Maintenant, comment dois-je mettre en place mes classes pour l'organisation de ces fonctions. Dois-je les mettre tous dans la même classe, ou devrais-je séparer les commentaires des articles, ou peut-être les fonctions seperate qui extraient un seul article / commentaire de ceux qui récupèrent une liste d'articles / commentaires. Je pourrais ajouter plus de choses sur le site plus tard qui permettent des commentaires, donc je pensais juste seperating toutes les fonctions de commentaires des autres. En outre, les fonctions « locales » utilisent tous la même fonction qui effectue le calcul, alors que je devrais groupe les ensemble, ou peut-être tout simplement utiliser l'héritage ... toute suggestion ???

Alors que sur le sujet de la POO, j'ai une classe d'utilisateurs qui ressemble à ... privé $ user = array ();

public function Get_User_Data($uid){
  //get user data from database
  return $this->user;
}

public function Set_User_Data($user_array){
  $this->user = $user_array;
}

public function Add_User(){
  //INSERT IGNORE  data from $this->user into the database 
}

Maintenant, personne ne voit rien de mal avec la façon dont ça a l'air, la plupart du temps, dois-je mettre le user_data en tant que paramètre de la fonction add_user, au lieu d'insérer les variables membres?

Créé 27/08/2009 à 03:52
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
6

Tout d'abord, vous devez comprendre que prendre vos anciennes fonctions de style procédural et les envelopper dans des objets ne rend pas votre orienté objet code, cela signifie simplement que vous écrivez code de procédure plus compliquée et horriblement laid.

Deuxièmement, je recommande fortement, en fait, je ne peux pas être trop pénible dans mes recommandations que vous prenez un peu de temps pour étudier au moins les différents frameworks PHP qui sont là-bas. Alors que vous ne pouvez jamais utiliser l'un d'eux, je me sens assez sûr pour garantir que l'étude un d'entre eux vous donnera une meilleure compréhension des principes orientés objet et la conception d'applications en général. Si vous ne l'avez jamais vu avant tout, ce qui suit devrait donner un point de départ:

  • Zend Framework
  • symfony
  • CakePHP
  • cadre solaire

De plus, si vous ne l'avez jamais entendu parler de Martin Fowler ou modèles d'entreprise Application Architecture, je recommande fortement que vous essayez de ramasser une copie. Il a littéralement écrit le livre qui a fourni les modèles de base qui sont utilisés dans tous les frameworks Web populaire.

Tant pis pour ma « lire la réponse manuelle » :-P

Dans votre cas particulier, je voudrais commencer par un modèle Active Record de base pour contenir votre logique d'accès aux bases de données et la logique de votre domaine. Dans ce type de modèle, chaque table de base de données (utilisateurs, articles, commentaires) est représenté par un objet discret. La classe d'Active Record de base pour les utilisateurs contiendrait toutes les fonctions pour obtenir un utilisateur ou une liste d'utilisateurs, ainsi que les fonctions à insérer, mettre à jour ou supprimer un utilisateur. En outre, une classe d'Active Record de l'utilisateur contiendrait des méthodes pour charger les articles et les commentaires d'un utilisateur.

pourrait ressembler à quelque chose comme une coquille classe utilisateur ceci:

class User extends Active_Record {

public function find() {}

/**
    Single function performs inserts and updates for the object
**/
public function save() {}

public function delete() {}

public function getArticles() {}

public function getComments() {}
}
Créé 27/08/2009 à 04:26
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more