Laravel em projetos de infraestrutura de grande escala

quadro Laravel de projetos de grande escala

 Apenas um projeto MVC não é suficiente, precisamos de uma estrutura mais completa do projeto

  1. Controlador muito inchado
  2. Modelo muito inchado
  3. Médias e grandes projetos de infraestrutura
    1. Crie um diretório
    2. Repositório
    3. Serviço
    4. Apresentador
  4. O teste de unidade
  5. Conclusão

Para os iniciantes a aprender divisão Laravel dois, um é um programa agradável irá preencher a arquitetura MVC, resultando em controlador e modelo de hipertrofia aberrante, como o futuro é difícil de manter, um muitas vezes não é consciente do programa em que uma reescrita classe hesite indecisos, afinal, é uma página PHP tradicional de um arquivo. Este artigo em resolver o mais adequado para o projeto de infra-estrutura de grande escala Laravel, e ambos fácil de manter , fácil de expandir e fácil de re-uso das funções e fácil de teste .

Controlador muito inchado


RoR é afetado, os novatos muitas vezes pensam MVC arquitetura é  modelviewcontroller :

  • Modelo é o repositório.
  • Controlador responsável por interagir com HTTP, chame o modelo e vista.
  • Ver é HTML.

Se de acordo com esta definição, as seguintes necessidades de reescrever Onde ele está?

  1. Enviar E-mail, usando a API externa.
  2. Usar a lógica escrito em PHP.
  3. O formato de exibição sob demanda para a conversão.
  4. Se deseja exibir determinadas informações sob demanda.
  5. Exibir informações diferentes sobre a demanda.

Onde 1, 2 é uma lógica comercial, 3, 4, 5 pertencente à lógica de exibição, se de acordo com a definição geral da MVC, o modelo é um banco de dados, ea vista é HTML, esses requisitos não podem ser escritas no modelo e vista, só pode mal escrever controlador.

Portanto, um grande número de programas escritos para iniciantes vai começar no controlador, as causas do controlador hipertrofia difícil de manter.

Modelo muito inchado


 Como a lógica escrito no controlador não é manutenção conveniente, então eu teria escrito no modelo lógico como?

Quando você move o modelo lógico do controlador, embora a tabela de controlador de fina, mas o modelo de gordura, a partir do modelo original representa o banco de dados tornou-se agora também responsável pela lógica de negócio e lógica de exibição, o resultado foi ainda pior.

Modelo representa o banco de dados? Pense nisso como um  Eloquent classbom, banco de dados lógico no repositório deve ser escrito em, razão pela qual Laravel 5 não tem  models目录, classe Eloquent só é colocado  app em apenas o diretório raiz.

Médias e grandes projetos de infraestrutura


Essa mudança como nós escrevê-lo? Não confinar o nosso pensamento no MVC:

  1. Modelo  : assim como classe eloquente.
  2. Repository  : Modelo auxiliar, banco de dados lógica de processamento, e depois injetado no serviço.
  3. -Serviço  : Auxiliar Controller, lógica de negócios e, em seguida, injetada no controlador.
  4. O Controlador  : receber uma solicitação HTTP, chamar outro serviço.
  5. Apresentador  : processamento lógica de exibição, e, em seguida, verteu-se em vista.
  6. Ver  : Use lâmina para vincular dados para HTML.

Onde o azul é o MVC original, e roxo é o foco deste artigo para introduzir:  Repository  modo, Serviço  de modo e  Apresentador  modo.

A seta indica o objecto de injecção dependência direcção. 11 na injeção de dependência, consulte o detalhado injeção de dependência discussões aprofundadas

Ainda podemos encontrar arquitetura MVC, devido  SOLID  a responsabilidade único princípio e de inversão de dependência princípio:

  1. Vamos ser separado do modelo lógico banco de dados, assistida pelo modelo de repositório, a injeção modelo de dependência no repositório.
  2. Vamos separar do controlador de lógica de negócios, assistida pelo controlador de serviço, a injeção de dependência serviço no controlador.
  3. Vamos mostrar a lógica de fora da vista, a vista auxiliar pelo apresentador, a injeção apresentador dependência em vista.

Crie um diretório

No  app diretório de construção  Repositories, Services e  Presenters diretórios.
 

 Não tenha medo de criar o diretório! !

Não tenha medo de estabelecer um diretório diferente do padrão Laravel outro diretório , de acordo com  SOLID  's responsabilidade único princípio, mais a função de classe, a mais responsabilidade e, portanto, viola a responsabilidade único princípio, então você deve dividir seu programa em pequenas porções cada parte tem sua própria função, não uma característica de classe colinas pacote mar, a chamada categoria universal , todo o projeto não deve apenas três partes MVC, deixar ir e construir o diretório apropriado de acordo com suas necessidades, e classe adequada para o diretório, desde que temos namespace da classe classificação pode nos ajudar.

Repositório

Devido ao espaço limitado, o repositório em uma discussão em separado artigo especial, consulte como usar o repositório padrão?

Serviço

Devido ao espaço limitado, o serviço em uma discussão em separado artigo especial, consulte How to Use o modo de serviço?

Apresentador

Devido ao espaço limitado, o apresentador em uma discussão em separado artigo especial, consulte como usar o modo Apresentador?

O teste de unidade


Agora que a injecção dependência modelo, vista, dependências de objetos controlador ter sido desmontado, também são utilizadas, de modo a que cada parte pode ser individualmente a unidade de teste, para testar tal serviço, será o repositório simulada, ou outro serviço pode ser zombar.

Apresentador pode ser um separado teste unidade, o outro para ser mock-Service, o teste de aceitação não é necessariamente executar, a fim de testar a lógica de exibição.

Conclusão


  • Este artigo falou sobre arquitetura é apenas o começo, você pode adicionar mais diretórios de acordo com as reais necessidades da classe, se você achar que seu MVC violar  SOLID  em princípios, corajosamente MVC além da reconstrução da classe, em seguida, de acordo com os seguintes métodos:

    1. Criar uma nova classe ou interface.
    2. A injecção dependência objeto de dependência a classe.
    3. Lidar com suas responsabilidades na classe.
    4. O controlador de classe ou de interface ou injectado em vista.
  • Finalmente, com o teste de unidade, a arquitetura reconfigurável teste é o mesmo que os resultados demanda original.

 

 

Publicado 96 artigos originais · ganhou elogios 4 · vê 30000 +

Acho que você gosta

Origin blog.csdn.net/qq_24935119/article/details/89656569
Recomendado
Clasificación