--- Introducción --- Estructura de carpetas: Se utiliza la brindada por Laravel. . Las carpetas que trae la separación por modulos que propone Nicolas Widart, permitiendo que cada modulo sea como un holograma en pequeño del proyecto general, utilizando la mísma estructura de carpetas. He modificado y agregado algunas carpetas: . Bajo Models he separado lo que refiere a modelos de la base de datos, y clases lógicas (que no refieren a tablas de la base de datos). . Agrego una carpeta "UseCases" (Casos de uso) para separar en pequeñas unidades todo tipo de lógica y operatoria que pudiera necesitarse. Ya sea por un requerimiento desde pantalla (controller) o una solicitud api. . El modulo "General" refiere a todo aquello que no ha alcanzado una embergadura como para asignarle un modulo particular. --- Namespaces: En php cuando nos referimos a un objeto, y escribimos su namespace sin barra inicial se asume que ese namespace está bajo la clase padre que lo está utilizando. Pero si queremos afirmar que no es relativo a la clase actual, indicamos que es un namespace absoluto, se debe iniciar con barra y el namespace completo. Ejemplo: Estando dentro del modulo Estudiante, en la carpeta Models/DB $Sede = \App\Modules\Estudiante\Models\DB\Estudiante::DBfind($sedes_id)->toArray(); ( no funcionará: 'App\Modules\Estudiante\Models\DB\Estudiante' not found mientras que dicho path si funciona en los encabezados de los php ) funcionará: $Sede = \Modules\Estudiante\Models\DB\Estudiante::DBfind($sedes_id)->toArray(); Todos los path a las clases que pertenezcan al modulo deben comenzar desde 'Modules' incluído, sin barra inicial: namespace Modules\Contabilidad\Http\Backend\Controllers; use Modules\Contabilidad\Usecases\Deudas\DeudasEstudiante; Y los path que correspondan a clases externas al modulo deben comenzar desde App: use App\Http\Controllers\EsteProyectoController; --- PARA CADA NUEVO MODULO: Crear manualmente: Http Back Controllers Middleware Front Controllers Middleware Crear manualmente: Models DB Logic Usecases --- Tree deseado: Si bien nWidart ya provee las carpetas que de cada modulo, he hecho algunos cambios: Modules %module% Config Database Http Back ( Área para usuarios administradores ) Controllers Middleware Front ( Área para visitantes ) Controllers Middleware #Super ( Área para webmaster y superadministradores ) # Controllers # Middleware Models DB Logic Provides Resources Routes Test Usecases Descripción: - Models: involucra toda la funcionalidad en detalle que desarrolla el módulo. - BD: modelos hacia la Base de Datos - Logic: modelos que realizan todas las operatorias necesarias MotherLogic.php: interconecta todos los modelos. Brinda los métodos invocables por los casos de uso (Usecases). - UseCases: compendio de todos los casos de uso, como unidades mínimas reutilizables. - Providers: Registro de servicios que ofrece el modulo. - Routes: Punto de entrada de las peticiones. Creación: php artisan module:make Contabilidad # SHARED o GENERAL # Contiene componentes que no se ubican expresamente en alguno de los otros modulos. php artisan module:make Shared (este punto lo tengo en analisis) Cada modulo podrá tener su interfase: "PublicConector.php" o "Conector.php" Brinda todos los métodos que pueden ser invocados desde el exterior del modulo. Es la puerta de entrada de solicitudes del exterior al modulo, facilitando su comprensión, y ocultando su funcionamiento. -- Visualización de datos temporales Esto está en la doc de MiLibreria, en 8_ante_errores.txt: Para hacer dump, en entornos de ajax, ver la documentación en miLibreria, helpers. -- Devolución de mensajes desde el controller $this->Mensajero->addMensaje( __('system.error_animal_incorrect'), 'error' ); return $this->json(); // es parte del