Para configurar la aplicación utilizamos el archivo /config/app.json. Es un conjunto de datos json en los que cada clave es un elemento a configurar.
Este archivo es capaz de configurar el nombre de la aplicación con la clave "appName", esta variable podrá ser accesida en toda la aplicación mediante $appName en las vistas y APP_NAME en el código Php.
{
"appName": "Mi asombrosa aplicación"
}
echo "Mi aplicación se llama: " . APP_NAME;
<span>Nombre de la aplicación: $appName</span>
Para configurar más variables globales, utilizamos la clave "globals", siendo esta un elemento json, en la que cada clave es el nombre de la variable global y su valor es especificado como el valor de la clave. Podremos acceder a esta información con la sintaxis App::get('nombreVariableGlobal') en nuestro código.
{
"globals": {
"EMAIL_ADMIN": "luis@espino.info"
}
}
print_r( App::get('EMAIL_ADMIN') );
Las rutas representan url's o direcciones web. La configuración las "apunta" a controladores y funciones. Se configura con la clave "routes" y es un arreglo de elementos json.
Cada elemento cuenta con las claves:
{
"routes": [
{
"method": "*",
"url": "",
"newUrl": "default"
},
{
"method": "GET",
"url": "cliente/nuevo",
"newUrl": "customer/newcustomer"
}
]
}
Los segmentos restantes son considerados como parámetros para la función, por ejemplo:
{
"routes": [
{
"method": "*",
"url": "usuarios/detalle",
"newUrl": "users/get"
}
]
}
Suponiendo que nuestro sitio es misitio.com, al entrar a http://misitio.com/usuarios/detalle/123, el framework ejecutará:
$UsersController->get('123');
Pueden ser multiples parámetros.
Otra manera de declarar parámetros es con dos puntos (":"), así:
{
"routes": [
{
"method": "*",
"url": "admin/empresas/:id/usuarios/nuevo",
"newUrl": "admin/adduser/:id"
}
]
}
Al entrar a http://misitio.com/admin/empresas/123/usuarios/nuevo el framework ejecutará:
$AdminController->addUser('123');
**IMPORTANTE** Si se utiliza este método, los parámetros deben ser numéricos.
Utilizamos la clave: "dbConnections", siendo un arreglo de objetos json. Podemos declarar cuantas conexiones a bases de datos deseemos, asignándole un nombre a cada una de ellas, sin poderse repetir este dato. Debemos declarar además:
{
"dbConnections": [
{
"name": "miSitio",
"driver": "mysql",
"hostName": "127.0.0.1",
"databaseName": "misitio",
"userName": "luis",
"password": "myPass"
}
]
}
$db = new Db( 'miSitio' );
$sql = "SELECT * FROM customers";
$resultSet = $db->query( $sql );
Para utilizar una conexion por defecto, simplemente la nombramos como "default", luego en las declaraciones no tenemos que especificar un nombre de conexión.
{
"dbConnections": [
{
"name": "default",
"driver": "pgsql",
"hostName": "127.0.0.1",
"databaseName": "mydb",
"userName": "luis",
"password": "myPass"
}
]
}
$db = new Db(); // no es necesario el nombre
$sql = "SELECT * FROM customers";
$resultSet = $db->query( $sql );
Las fuentes de datos pueden ser consultas a bases de datos, a una tabla o multiples tablas, y pueden estar parametrizadas. El framework ejecutará la fuente de datos automáticamente y devolverá el resultado.
Toda fuente de datos tiene que tener una conexión especificada, a la base de datos de la cual tomará la información.
Para declararla utilizamos la clave "dataSources", es un arreglo de objetos Json, en el que para cada objeto debemos especificar:
{
"dataSources": [
{
"connection": "default",
"name": "dsMedals",
"type": "SQLQUERY",
"text": "SELECT * FROM medals"
}
]
}
$dsName = "dsMedals";
$result = Db::getResultFromDataSource( $dsName, null);
print_r( $result );
La estructura completa de la configuraicón se ve así:
{
"appName": "MiSitio",
"globals": {
"EMAIL_ADMIN": "luis@espino.info"
},
"routes": [
{
"method": "*",
"url": "",
"newUrl": "default"
}
],
"dbConnections": [
{
"name": "default",
"driver": "mysql",
"hostName": "127.0.0.1",
"databaseName": "misitio",
"userName": "luis",
"password": "myPass"
}
],
"dataSources": [
{
"connection": "default",
"name": "dsCustomers",
"type": "SQLQUERY",
"text": "SELECT * FROM customer WHERE customer_id = :customerId",
"parameters": [
{
"name": "customerId",
"type": "session",
"defaultValue": "1"
}
]
}
]
}