Versión 2.0.2-2024-12-13
Un marco de aplicación web simple que implementa el patrón arquitectónico de control de visión del modelo (MVC).
composer require "simplesamlphp/simplesamlphp:^2.2" )UMVC admite módulos, consulte Configuración/Componentes.
El marco admite pruebas funcionales con su complemento Framework. La codecepción instalada a nivel mundial debe ser compatible con requerido (actualmente v3.1.2)
UMVC admite CLI. Puede crear sus propios comandos. Los comandos incorporados son:
Ejecutar comandos como php app $command $action $parameters
El marco se puede incluir en su proyecto con el compositor. Ejecutar composer require uhi67/umvc:dev-master . Se puede crear un proyecto nuevo y vacío utilizando composer create-project --prefer-dist uhi67/umvc-app name . Esto le entregará una nueva aplicación vacía utilizando el marco UMVC en el directorio nombrado. Elija cualquier nombre que prefiera.
ADVERTENCIA: Esta parte está en construcción. Obtenga más información sobre las clases mencionadas en el DocBlock de la definición de clase.
composer.json de su aplicación e incluya uh67/umvc , por ejemplo, composer init --name myname/myapp --require uhi67/umvc:* .composer update .vendor/uh67/umvc/app a la raíz de su aplicación. Este es el lanzador de los comandos CLI.vendor/uh67/umvc/www/index.php y .htaccess en el directorio www de su aplicación. Este es el enrutador de la interfaz web.config/config.php , consulte la plantilla en vendor/uh67/umvc/config/config-template.php .runtime que el servidor web para colocar archivos temporales.www/assets Writited por el servidor web para colocar archivos de activos en caché de varios componentes. controllers , utilizando el espacio de nombres appcontrollers , y derivan de uhi67umvcController .views Dir, en formato PHTML simple, y organícelos de acuerdo con views/controller/action.php Structure.models . Los modelos de bases de datos son uhi67umvcModel , los modelos sin base de datos son uhi67umvcBaseModel . migrations .views/layouts . Las vistas pueden llamar a otras vistas parciales.commands , derivando de uhi67umvcCommand class. Hay algún comando incorporado en el marco. El comando php app enumera todos los comandos disponibles, tanto incorporados como personalizados.messges/la.php donde "LA" es el idioma al que desea traducir. Todos los componentes, la mayoría de las clases UMVC, incluida la clase de aplicación principal en sí, es un uhi67umvcComponent . Component Implementa las características de la propiedad : Magic Getter y Setter usan los métodos GetProperty y SetProperty. Component es configurable : Constructor acepta una matriz de configuración que contiene valores para propiedades públicas.
MySqlConnection : para conectarse a la base de datos. Incluye SQL Consulty Builder. Actualmente la única implementación de Connection .FileCache : la única implementación de CacheInterface .SamlAuth : la única implementación para AuthManager .L10n -Localización simple, predeterminada automáticamente, traduce solo los mensajes UMVC.L10nFile : la localización basada en archivos para traducir mensajes de su aplicación. Form : un widget con vista incorporada para mostrar y procesar formularios HTML utilizando sus modelos.Grid (widget, pero aún falta la vista incorporada): para mostrar listas de modelos filtradas paginadas.Query : representa una consulta SQL parametrizada y flexible en la estructura PHP. El comando SQL se puede construir a partir de él.Request : representa la solicitud HTTP, se puede usar para obtener parámetros GET y POST.Session : representa la sesión de PHP actual, se puede usar para obtener y establecer variables. El script de entrada única para la aplicación web es www/index.php . Respectivamente, el script de entrada única para la aplicación CLI es el archivo app . Ambos deben copiarse en su directorio de aplicaciones desde el vendor/uhi67/umvc/ Directory.
Las reglas www/.htaccess redirigen todas las solicitudes no fundamentales al www/index.php . Sin embargo, los activos estáticos se sirven directamente desde el directorio www. Obtenga más información sobre cómo servir los activos de la biblioteca más tarde.
El index.php inicializa el autoloader, cargue la configuración principal, crea el objeto principal (clase definida en la configuración, generalmente uhi67/umvc/App o su descendiente). La configuración principal sigue las reglas del Component configurable.
Toda la URL formada como https: // myapp/acontroller/anaction se procesa de la siguiente manera:
uhi67/umvc/App analiza la solicitud, calcula la clase de controlador real (derivada de uhi67/umvc/Controller ) para usar, crea el controlador y ejecuta el método de acción solicitado. Como en el ejemplo anterior, el acontrolador se refiere a su clase de controlador en su directorio controllers como acontrollerController , y la anacción se refiere al método de acción (como ActionAnation ).
Si falta el nombre de la acción en la URL, se ejecutará actionDefault . Si también falta el nombre del controlador, se utilizará el controlador principal configurado. También es posible crear una URL con un nombre de acción del controlador predeterminado sin especificar el nombre del controlador: la única restricción que no puede tener un controlador con el mismo nombre que esta acción.
El comando AL CLI formado como php app acontroller/anaction se procesa de la siguiente manera:
uhi67/umvc/App analiza la solicitud, calcula la clase de controlador real (derivada del uhi67/umvc/Command ) para usar, crea el controlador y ejecuta el método de acción solicitado. Como en el ejemplo anterior, Acontroller se refiere a su clase de controlador en su directorio commands como acontrollerController , y la anacción se refiere al método de acción (como ActionAnAnction ). Los comandos incorporados se pueden ejecutar de la misma manera. Un comando con el mismo nombre en nuestra aplicación anula el comando incorporado.
Se puede acceder a las partes de la solicitud de URL actual como:
Para crear una nueva URL utilizando nombres de controlador y acción, y los parámetros Optioanl Qurey, use uno de los siguientes:
En sus archivos de vista, puede referir sus activos estáticos ubicados en el directorio www de manera estática, por ejemplo <link href="/assets/css/app.css" rel="stylesheet"> . Por el contrario, si desea consultar un archivo de activos ubicado en algún lugar de la biblioteca de proveedores creado por el compositor, puede usarlos de esta manera:
<script src="<?= $this->linkAssetFile('npm-asset/bootstrap/dist', 'js/bootstrap.bundle.min.js') ?>"></script> La función linkAssetFile copia todos los archivos del directorio en el primer argumento en el directorio de caché de activos en el www , y crea una URL válida al archivo en el segundo argumento. Nota: El primer argumento identifica un paquete de activos. Solo la primera llamada para cualquier paquete copia los archivos. Todas las llamadas posteriores al mismo paquete generan solo el enlace para el archivo.
El caché de activos se vacía mediante el comando composer install . El caché de activos es siempre www/asset/cache y no es configurable.
...
Este repositorio contiene una aplicación de prueba incorporada para pruebas unitarias de codecepción interna. El único propósito de la aplicación de prueba en el directorio tests es poder ejecutar pruebas unitarias, y no una aplicación de muestra para comenzar.
git clonecomposer updatetests/_data/test-config.php basado en la plantillaumvc-test de acuerdo con la configuración de la base de datos en tests/_data/test-config.phpphp vendor/bin/codecept run unit para pruebas unitariasSe acercan más pruebas unitarias ...
Se puede utilizar un entorno de prueba dockerizado incorporado para probar con diferentes versiones de PHP y bases de datos.
Pasos:
tests/docker-compose.yml (haga clones de este archivo de plantilla)tests/docker/Dockerfile (los pasos de instalación de extensión pueden cambiar)tests/.envdocker compose up --build -d (en el Dir de las tests )docker exec -it umvc-php-1 php vendor/bin/codecept run unit