Como devo configurar minhas aulas?

votos
0

Estou começando a trabalhar com oop para construir um site de dados gerados por usuários.

Existem diferentes tipos de dados provenientes de minhas aulas. I têm funções que obter uma lista de dados do banco de dados, e funções para selecionar apenas um item a partir dessas listas. Por exemplo

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

Agora, como devo configurar minhas aulas para organizar estas funções. Devo apenas colocá-los todos na mesma classe, ou devo separar os comentários dos artigos, ou talvez separar as funções que recuperam um único artigo / comentário daqueles que recuperar uma lista de artigos / comentários. Eu poderia acrescentar mais coisas para o site depois que permitir comentários, então eu estava pensando em apenas separando todos os comentários de funções dos outros. Além disso, as funções de locais todos usam a mesma função que executa a matemática, então devo grupo aqueles juntos, ou talvez apenas usar a herança ... qualquer sugestão ???

Ainda sobre o tema da oop, eu tenho uma classe de usuário que se parece com ... $ user private = 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 
}

Agora que ninguém vê nada de errado com a forma como isso parece, em sua maioria, devo definir o user_data como um parâmetro para a função add_user, em vez de inserir as variáveis ​​de membro?

Publicado 27/08/2009 em 03:52
fonte usuário
Em outras línguas...                            


1 respostas

votos
6

Primeiro de tudo você precisa entender que tomar as suas funções de estilo processual antigos e envolvê-los dentro de objetos não faz orientada a objeto seu código, isso significa apenas que você está escrevendo código de procedimento mais complicado e terrivelmente feio.

Em segundo lugar eu recomendo fortemente, na verdade eu não posso ser muito extenuante em minhas recomendações que você levar algum tempo para, pelo menos, estudar os vários frameworks PHP que estão lá fora. Enquanto você nunca pode usar qualquer um deles, me sinto muito segura para garantir que estudar qualquer um deles vai lhe dar uma melhor compreensão sobre os princípios de orientação a objetos e bom design do aplicativo em geral. No caso de você nunca viu qualquer antes, o seguinte deve dar um lugar para começar:

  • Zend Framework
  • symfony
  • CakePHP
  • Quadro Solar

Além disso, se você nunca ouviu falar de Martin Fowler ou padrões de arquitetura de aplicações corporativas, eu recomendo fortemente que você tente e pegar uma cópia. Ele literalmente escreveu o livro que forneceu os padrões básicos que estão em uso em cada framework web popular.

Tanto para o meu 'ler a resposta manual' :-P

No seu caso particular, gostaria de começar com um padrão básico Active Record para conter sua lógica de acesso a banco de dados e sua lógica de domínio. Neste tipo de padrão, cada quadro de banco de dados (de usuários de artigos, comentários) é representada por um objecto discreta. A classe Active Record fundamental para os utilizadores conteria todas as funções para obter um usuário específico ou uma lista de usuários, bem como as funções para inserir, atualizar ou excluir um usuário. Além disso, uma classe Active Record usuário deverá conter métodos para carregar artigos e comentários de um usuário.

A classe de shell do usuário pode ser algo como isto:

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() {}
}
Respondeu 27/08/2009 em 04:26
fonte usuário

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