AIS Framework está diseñado para ser simple y eficiente, lo que permite a los desarrolladores construir e implementar rápidamente aplicaciones. Su arquitectura promueve un código limpio y mantenible, por lo que es una excelente opción tanto para principiantes como para desarrolladores experimentados que buscan una solución robusta y escalable.
Clon, luego usa:
git clone https://github.com/titan2420/ais.git
La arquitectura AIS está diseñada con simplicidad en su núcleo. Esta simplicidad facilita una comprensión intuitiva del sistema, lo que facilita a los desarrolladores interactuar y modificar el marco. Al minimizar la complejidad, AIS asegura que los desarrolladores puedan centrarse más en desarrollar características en lugar de luchar con el marco en sí.
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
En el marco AIS, las rutas se definen utilizando una carpeta sencilla y una estructura de archivo en la carpeta del controlador. Cada carpeta representa un segmento de ruta potencial, y se puede acceder a cada archivo dentro de esas carpetas como punto final. Por ejemplo:
---- app
-------- controller
------------ home.php (Accessible via /)
------------ user
---------------- home.php (Accessible via /user/)
---------------- transactions.php (Accessible via /user/transactions)
---------------- edit-profile.php (Accessible via /user/edit-profile)
Esta estructura permite un fácil mapeo de URL a sus controladores y vistas correspondientes, simplificando el proceso de enrutamiento.
Hay una artitectura de middleware, preprocesado y postprocesos en AIS para evitar la duplicación del código y hacer que el código sea más mantenible.
Echa un vistazo a este ejemplo:
---- app
-------- controller
------------ home.php
------------ middleware.php
------------ user
---------------- home.php
---------------- preprocess.php
---------------- postprocess.php
Cuando el cliente llegue /user/ , se tomarán los siguientes pasos:
controller/middleware.php se ejecutará.controller/user/preprocess.php .controller/user/home.php se ejecutará.controller/user/postprocess.php .El enrutamiento dinámico en el marco AIS permite patrones de URL flexibles que se adaptan a las solicitudes entrantes dinámicamente. En lugar de tener una estructura de URL fija, el enrutamiento dinámico utiliza patrones que pueden igualar múltiples rutas de URL. Así es como funciona:
---- app
-------- controller
------------ user
---------------- dynamic.php (Accessible via /user/{value})
Por ejemplo, si se realiza una solicitud a /user/123 , el sistema de enrutamiento dinámico interpretará 123 como un parámetro y lo procesará utilizando el controlador user/dynamic.php por $link_vars variable.
<?php
// controller/user/dynamic.php
echo " User id: " . $ link_vars [ 0 ]; // User id: 123
?>También puede usar la estructura del directorio para el enrutamiento dinámico, por ejemplo:
---- app
-------- controller
------------ user
---------------- dynamic
-------------------- dynamic
------------------------ home.php (Accessible via /user/{value[0]}/{value[1]})
------------------------ open.php (Accessible via /user/{value[0]}/{value[1]}/open)
-------------------- home.php (Accessible via /user/{value[0]})
-------------------- edit.php (Accessible via /user/{value[0]}/edit)
Por ejemplo, si se realiza una solicitud a /user/123/AIS-Project , el sistema de enrutamiento dinámico interpretará 123 como un parámetro y lo procesará utilizando el controlador user/dynamic.php por $link_vars variable.
<?php
// controller/user/dynamic/dynamic/open.php
<<<<<<< HEAD
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ;
=======
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ; // Opening AIS-Project of 123 user.
>>>>>>> 0 bee68c121c4e091084a9bf093779bfe647b757d
?> Puede cargar una vista utilizando la función view(view_path, data, options) .
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?> Si hay layout.php , se incluirá en la vista automáticamente.
---- app
-------- view
------------ layout.php
------------ home.php
------------ user
---------------- home.php
---------------- transactions.php
---------------- edit-profile.php
Utilizará datos de usuario en /user/home .
<?php
// view/user/home.php
echo " Welcome, " . $ user [ ' name ' ] . " ! " ;
?> Puede crear fácilmente API usando el kit de herramientas AIS.
<?php
// controller/api/user/get-users.php
$ users = database:: select ( ' users ' , ' * ' , [ ' LIMIT ' => 1 ]);
response ( $ users );
?>La salida estará en formato JSON.
{
"meta" : {
"status" : " SUCCESS "
},
"data" : [
{
"id" : 1 ,
"name" : " John Doe "
}
]
}Puede crear fácilmente comandos CLI utilizando AIS Toolkit.
<?php
// controller/_cli/jobs/deactivate-users.php
$ inactive_users = database:: select ( ' users ' , ' * ' , [ ' active ' => 1 ]);
. . .
cout ( " Deactivated users: " . count ( $ inactive_users ));
?>Puede ejecutarlo usando este comando:
php index.php -r jobs/deactivate-users
En AIS, se prefiere no usar modelos para la simpilicidad. Sin embargo, en los controladores, puede cargar modelos utilizando la función model(model_path) cuando sea necesario.
En AIS, los modelos son simples y fáciles de usar. Están ubicados en la carpeta app/model y se utilizan para interactuar con la base de datos.
<?php
// controller/user/home.php
model ( ' user ' );
// or
require MODEL . ' user.php ' ;
$ user = getUser ( $ _SESSION [ ' user_id ' ]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?>AIS utiliza una versión personalizada de Medoo como envoltura de base de datos. Es fácil de usar y fácil de entender.
<?php
// model/user.php
function getUser ( $ user_id ) {
return database:: select ( ' users ' , ' * ' , [ ' id ' => $ user_id ]);
}
function activateUser ( $ user_id ) {
return database:: update ( ' users ' , [ ' active ' => 1 ], [ ' id ' => $ user_id ]);
}
. . .
?> ¡No lo hagas complejo!
AIS Regla 1: para simplificar, no para usar clases para controladores y modelos para garantizar implementaciones fáciles.
AIS Regla 2: Por simplicidad, cada archivo es solo una solicitud, asegurando que los archivos sigan siendo pequeños y manejables.
AIS Regla 3: Para simplificar, no es necesario especificar el método HTTP en solicitudes y rutas, ¡los nombres de archivos son suficientes!
AIS Regla 4: Para simplificar, no se recomiendan modelos.
Aquí hay un uso completo para los métodos en el marco AIS:
Fuerza a que se acceda a una página a través del método de solicitud HTTP y el tipo de contenido. Debe llamar a esta función al comienzo de su controlador. Si no se cumplen las condiciones, el script terminará con el error HTTP.
Parámetros:
$options (matriz): opciones para el método y tipo de contenido.Ejemplo de uso:
<?php
// controller/user/home.php
http_check ([ ' method ' => ' POST ' , ' content_type ' => ' application/json ' ]);
$ data = json_decode ( file_get_contents ( ' php://input ' ), true );
?>Carga un archivo de modelo o un directorio que contanga los archivos de modelo.
Parámetros:
$model (cadena): la ruta del modelo en la carpeta app/model .Ejemplo de uso:
<?php
// controller/user/home.php
model ( ' user ' );
?>Carga un archivo de vista con datos y opciones.
Parámetros:
$view (String): la ruta de vista en la carpeta app/view .$data (matriz): los datos son una matriz asociativa que se extrae en la vista como variables.$options (matriz): Opciones para cargar el diseño como ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Se puede acceder a estas opciones usando la variable $_VIEW .Ejemplo de uso:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
?> Rendera una vista y devuelve el contenido de búfer de salida. En lugar de usar view() para hacer salida al cliente, puede usar render() para obtener el contenido de búfer de salida.
Parámetros:
$view (String): la ruta de vista en la carpeta app/view .$data (matriz): los datos son una matriz asociativa que se extrae en la vista como variables.$options (matriz): Opciones para cargar el diseño como ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Se puede acceder a estas opciones usando la variable $_VIEW .Ejemplo de uso:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
$ view = render ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
echo $ view ;
?> Carga un archivo de biblioteca o un directorio de biblioteca con el archivo init.php .
Parámetros:
$lib (cadena): la ruta de la biblioteca en la carpeta app/lib .Ejemplo de uso:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>Redirige a una URL especificada y termina el script.
Parámetros:
$url (cadena): la URL para redirigir.Ejemplo de uso:
redirect ( ' https://example.com ' );Emite datos con un delimitador opcional a la consola. Este nombre se da desde el lenguaje C ++.
Parámetros:
$data (mixtos): los datos a la salida.$delimiter (cadena): el delimitador para agregar.Ejemplo de uso:
cout ( ' Hello World ' , " n " );Envía una respuesta con datos y metadatos opcionales al usuario en API y luego termina el script.
Parámetros:
$data (mixtos): los datos de respuesta.$meta (matriz): metadatos opcionales.Ejemplo de uso:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}Envía una respuesta con un estado y datos al usuario en API y luego termina el script.
Parámetros:
$code (cadena): el estado para enviar al usuario.$data (matriz): los datos de respuesta.Ejemplo de uso:
status ( ' PROCESS_ERROR ' , [ ' error ' => ' Something went wrong ' ]);
// Output to endpoint: {"data":{"error":"Something went wrong"},"meta":{"status":"PROCESS_ERROR"}}Envía una respuesta de éxito con los datos.
Parámetros:
$data (matriz): los datos de respuesta.Ejemplo de uso:
success ();
// Output to endpoint: {"data":[],"meta":{"status":"SUCCESS"}}Envía una respuesta de falla con datos y estado.
Parámetros:
$data (matriz): los datos de respuesta.$status (cadena): el código de estado.Ejemplo de uso:
fail ([ ' error ' => ' Invalid request ' ], ' ERROR ' );Envía un código de estado HTTP con datos y metadatos opcionales.
Parámetros:
$code (int): el código de estado HTTP.$data (matriz): los datos de respuesta.$meta (matriz): metadatos opcionales.Ejemplo de uso:
http_status ( 404 ); // Shows browser 404 error.Ejemplo de uso:
http_status ( 404 , [ ' error ' => ' Not found ' ], [ ' status ' => ' ERROR ' ]);
// HTTP error 404 + Output to endpoint: {"data":{"error":"Not found"},"meta":{"status":"ERROR"}}Ejemplo de uso:
http_status ( 404 , " Page not found! " );
// HTTP error 404 + Output text to endpoint: Page not found!No hace nada :). Se utiliza para el código de belleza o simplemente un marcador de posición para el desarrollo futuro.
Ejemplo de uso:
do_nothing (); Volcados ( var_dump ) Una variable y opcionalmente termina el script.
Parámetros:
$var (mixto): la variable para ver.$die (bool): si terminar el script.Ejemplo de uso:
dump ( $ var , true ); Alias para el método dump .
Parámetros:
$var (mixto): la variable para ver.$die (bool): si terminar el script.Ejemplo de uso:
d ( $ var , true );Alias para "ver y morir". Dobla una variable y termina el script.
Parámetros:
$var (mixto): la variable para ver.Ejemplo de uso:
dd ( $ var );Genera una cadena alfanumérica aleatoria de una longitud especificada.
Parámetros:
$length (int): la longitud de la cadena aleatoria.Ejemplo de uso:
strand ( 8 ); // Output: "9S34zD7o" Envía una application/x-www-form-urlencoded Solicitud con datos de formulario.
Parámetros:
$url (cadena): la URL para enviar la solicitud.$data (matriz): los datos del formulario a enviar.Ejemplo de uso:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); Envía una application/json con datos JSON.
Parámetros:
$url (cadena): la URL para enviar la solicitud.$data (matriz): los datos JSON para enviar.Ejemplo de uso:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);Emite un retroceso de la pila de llamadas actual.
Ejemplo de uso:
backtrace (); // Outputs a backtrace of the current call stack.Fleja el búfer de salida y cierra las conexiones.
Ejemplo de uso:
close_everything ();Cierra todo y termina el guión.
Ejemplo de uso:
die_gracefully ();