DLUnire Framework

DLUnire Framework

Nota Importante: Este framework está en desarrollo activo y puede experimentar cambios frecuentes. Actualmente, se encuentra en la versión v0.1.28. Para consultar los cambios realizados, puedes visitar el repositorio de DLUnire Framework.

Se recomienda no usar este framework en entornos de producción debido a su fase temprana de desarrollo.

Advertencia: La documentación de este framework está en desarrollo y puede estar sujeta a modificaciones.

Crear una Aplicación

Para crear una nueva aplicación utilizando el framework DLUnire, simplemente ejecuta el siguiente comando en tu terminal:

bash
composer create-project dlunamontilla/dlunire my-app

Esto generará una estructura básica de directorios y archivos esenciales para comenzar a desarrollar con DLUnire.

Estructura de Directorios

Nota: En versiones futuras del framework, la estructura de directorios se simplificará y flexibilizará para ofrecer una mayor adaptabilidad y facilitar la integración con diferentes tipos de proyectos. El objetivo es permitir que los desarrolladores elijan la estructura y tecnologías que mejor se ajusten a sus necesidades.

text
/
├── Makefile          # Contiene los comandos para compilar la aplicación.
├── README.md         # Información general sobre la aplicación.
├── composer.json     # Define las dependencias de la aplicación.
├── composer.lock     # Bloqueo de las versiones de las dependencias.
├── phpunit.xml       # Configuración para pruebas unitarias.
├── vendor/           # Directorio donde se almacenan las dependencias instaladas.
├── app/              # Contiene los controladores de la aplicación.
├── boot/             # Archivos de configuración del entorno de la aplicación.
├── dlunire/          # Núcleo del framework.
├── public/           # Archivos estáticos accesibles públicamente.
├── resources/        # Archivos de recursos, incluidos plantillas.
├── routes/           # Define las rutas de la aplicación.
├── storage/          # Archivos subidos por el cliente.
└── tests/            # Pruebas automatizadas de la aplicación.

Directorios Principales

  • app/: Contiene los controladores y la lógica principal de la aplicación.
  • boot/: Archivos de configuración para establecer el entorno de la aplicación.
  • dlunire/: Directorio que gestiona el núcleo y la configuración inicial del framework DLUnire.
  • public/: Directorio público donde se alojan archivos estáticos y el punto de entrada del servidor web (generalmente index.php).
  • resources/: Archivos de recursos como plantillas o traducciones.
  • routes/: Define las rutas de la aplicación, cargadas automáticamente por el framework.
  • storage/: Almacena archivos generados o subidos por el cliente.
  • logs/: Archivos de registro útiles para el monitoreo y depuración del sistema.
  • tests/: Contiene los casos de prueba automatizados para asegurar el correcto funcionamiento del sistema.

Contenido del Directorio app/

El directorio app/ se organiza en subdirectorios que agrupan elementos clave de la lógica de la aplicación. Aquí se detallan los principales:

  • Auth/: Contiene las clases relacionadas con la autenticación y autorización de usuarios.
  • Constants/: Define constantes globales utilizadas en toda la aplicación.
  • Controllers/: Contiene los controladores que gestionan las solicitudes HTTP y las respuestas.
  • Helpers/: Funciones utilitarias reutilizables en diferentes partes del código.
  • Interfaces/: Define interfaces que aseguran la implementación de ciertos métodos en las clases.
  • Models/: Modelos que representan las entidades de la aplicación y gestionan las interacciones con la base de datos.

Rutas y Controladores

Nota Importante: Esta sección es solo una introducción básica a las funcionalidades del framework DLUnire. La documentación está en proceso de estructuración y puede sufrir modificaciones en las versiones futuras. A medida que se desarrollen más características y detalles, se actualizará para reflejar una guía más completa.

En DLUnire, las rutas y controladores se gestionan de manera sencilla pero flexible. La estructura de rutas permite definir tanto rutas estándar como rutas para APIs, y los controladores son responsables de procesar las solicitudes y devolver las respuestas adecuadas.

Definir una Ruta

Para crear una ruta, basta con agregar un archivo PHP en el directorio routes/ y definirla en los archivos correspondientes como web.php o api.php.

Ejemplo de una ruta utilizando el método HTTP GET:

php
use DLUnire\Controllers\HomeController;
DLRoute::get('/', [HomeController::class, 'index']);

Crear un Controlador

Para el controlador HomeController, se debe crear un archivo PHP en el directorio app/Controllers/ y definir el siguiente código:

php
<?php

namespace DLUnire\Controllers;
use Framework\Config\Controller;

final class HomeController extends Controller
{
    /**
     * Devuelve la vista de la página principal.
     *
     * @return string
     */
    public function index(): string {
        return view('layouts.main');
    }
}

Importante tomar en cuenta

Mientras que en Laravel las plantillas o vistas terminan en .blade.php, en DLUnire terminan en .template.html.

Dado que el framework tiene funcionalidades bastante extensas, la documentación de la sintaxis del motor de plantillas estará disponible en cuanto se haya estructurado la documentación del framework.

Este controlador se encarga de devolver la vista principal de la aplicación cuando se accede a la ruta raíz.

Definir una Ruta de API

A continuación, se muestra cómo definir una ruta de API para obtener los datos de un usuario. Primero, se crea el controlador UserController:

php
<?php

namespace DLUnire\Controllers;
use Framework\Config\Controller;

final class UserController extends Controller
{
    /**
     * Obtiene los datos de un usuario.
     *
     * @param object $params Parámetros de la ruta.
     * @return array<string, mixed>
     */
    public function getUser(object $params): array {
        /** @var array<string, mixed> $user */
        $user = User::where('uuid', $params->uuid)->first();

        return $user;
    }
}

Luego, en el archivo api.php, se debe definir la ruta de la siguiente forma:

php
DLRoute::get('/api/user/{uuid}', [UserController::class, 'getUser'])->filter_by_type([
    'uuid' => 'uuid',
]);

Explicación del Método filter_by_type()

El método filter_by_type() es una herramienta opcional que permite validar y filtrar los parámetros de la ruta por su tipo. En este ejemplo, se valida que el parámetro uuid sea del tipo uuid. Aunque no es obligatorio, se recomienda su uso para garantizar la correcta validación de los datos.

¿Qué ocurre cuando el método getUser() devuelve un array?

Cuando el método getUser() devuelve un array, el framework automáticamente lo convierte a JSON y lo devuelve como respuesta, es decir:

json
{
    "uuid": "123e4567-e89b-12d3-a456-426614174000",
    "name": "John Doe",
    "email": "john.doe@example.com"
}

Mientras que al mismo tiempo, envía la siguiente cabecera:

bash
Content-Type: application/json; charset=utf-8

Con el código de estado HTTP 200 OK.

Es decir:

php
header('Content-Type: application/json; charset=utf-8', true, 200);