Controladores y re-factorización para mantenimiento / sensibilidad

7

He leído muchas publicaciones similares a esta en el sitio: sin embargo, sigo cuestionando qué es lo mejor en mi situación (también las respuestas están en contradicción de una pregunta a otra).

Tengo un sitio web (aplicación web) con un controlador por sección de lógica de dominio (es decir, ProductsController, NewsController, ContactsController, etc.) y un controlador de administración muy grande y muy feo que contiene la lógica para Agregar / Editar / Ver / Eliminar funciones para cada sección ... ahora como puede imaginar, este controlador está muy fuera de control (mientras que cada función no es demasiado grande, tener docenas de funciones en un controlador no me sienta bien ...).

Por lo que he leído, el consenso general es simplemente agrupar las funciones admin en el controlador de 'secciones'; sin embargo, algunos también sugieren que también cree un nuevo controlador para cada sección de administración. Por lo tanto, tendría un control de productos y un controlador de productos. A mí me parece un poco excesivo, pero no tengo una idea clara de esto: se agradecería cualquier consejo o lectura, o si hay una "mejor práctica de la industria" que sería bueno saber. también.

    
pregunta rlemon 24.07.2012 - 15:17

4 respuestas

4

Cuando trabaje con patrones inspirados en MVC para la Web, se recomienda tener una relación 1: 1 entre Controladores y Vistas . Esto debería dividir su código base en partes mucho más manejables.

Además, como efecto secundario, puede encontrar una situación en la que está repitiendo el mismo código exacto con solo estructuras diferentes de la capa del modelo. Como por ejemplo listar los últimos documentos y los últimos usuarios. El flujo de código en ambos pares de vistas de controlador es el mismo, la única diferencia es la fuente de datos.

Para separar aún más la administración de las partes públicas, puede colocar las partes relevantes en diferentes espacios de nombres, que luego se asignan a subdirectorios con el mismo nombre por el cargador de clases.

    
respondido por el mefisto 24.07.2012 - 15:27
1

Descargo de responsabilidad: ¡Mi experiencia con MVC proviene únicamente de Joomla!

Creo que separar Admin / public es exactamente lo que quieres hacer. Personalmente, no mantendría a los Controladores en el mismo archivo, sino a todos los componentes de administración en su propio subdirectorio. Esto reduce la complejidad visual y lo mantiene simple.

    
respondido por el SomeKittens 24.07.2012 - 15:22
1

Así es como extiendo mis controladores. Cada controlador es responsable de un grupo específico de mi sitio.

Carpeta de controladores

application/controllers/
  admin/
    utilities.php
    accounts.php
    invoices.php
  profile/ - any user based controllers, same as above maybe?
  auth.php - all login, password resets etc.

Carpeta de vistas

application/views
  utilities/
    partials/
      _form.php
    add.php
    edit.php
    index.php
    view.php
  accounts/
  invoices/
    
respondido por el gorelative 24.07.2012 - 15:32
0

¿Por qué nos refactorizamos? Para que sea más fácil de mantener más tarde.

¿Qué es más fácil de mantener?

  1. Cada administrador importa en el controlador de "secciones", contaminando sus controladores probablemente ya grandes.
  2. Cada administrador importa en un nuevo controlador para cada sección.

La forma en que respondes a esta pregunta te dice qué debes hacer.

Y como sugiere @SomeKittens, suena como si quisieras separar la parte de administrador en su propia carpeta.

    
respondido por el Florian Margaine 24.07.2012 - 15:22

Lea otras preguntas en las etiquetas