payroll_manager/api-payroll/src/dependencies.php

74 lines
2.4 KiB
PHP

<?php
// DIC configuration
$container = $app->getContainer();
// view renderer
$container['renderer'] = function ($c) {
$settings = $c->get('settings')['renderer'];
return new Slim\Views\PhpRenderer($settings['template_path']);
};
// monolog
$container['logger'] = function ($c) {
$settings = $c->get('settings')['logger'];
$logger = new Monolog\Logger($settings['name']);
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level']));
return $logger;
};
// Mysql connection
$container['mysql'] = function ($c) {
$mysqlSettings = $c->get('settings')['mysql'];
// The database parameters
$host = $mysqlSettings['host'];
$port = $mysqlSettings['port'];
$database = $mysqlSettings['database'];
$user = $mysqlSettings['user'];
$password = $mysqlSettings['password'];
$charset = $mysqlSettings['charset'];
$pdoConnectionOptions = $mysqlSettings['pdoConnectionOptions'];
// Generic error messages
$databaseConnectionErrorMessage = $mysqlSettings['databaseConnectionErrorMessage'];
// Initiate the connection
$dsn = "mysql:host=$host;port=$port;dbname=$database;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $password, $pdoConnectionOptions);
} catch (Exception $e) {
error_log($e->getMessage());
exit($databaseConnectionErrorMessage);
}
return $pdo;
};
// Cryto functions
$container['cryptographyService'] = function ($c) {
$cryptographySettings = $c->get('settings')['cryptography'];
$cryptographyService = new App\Service\CryptographyService($cryptographySettings);
return $cryptographyService;
};
// Assert functions
$container['asserts'] = function ($c) {
$asserts = new App\Service\Asserts();
return $asserts;
};
// The session application
$container['sessionApplication'] = function ($c) {
$sessionApplication = new App\Application\SessionApplication($c['mysql'], $c['cryptographyService'], $c['asserts']);
return $sessionApplication;
};
// The employee application
$container['employeeApplication'] = function ($c) {
$employeeSettings = $c->get('settings')['employee'];
$employeeApplication = new App\Application\EmployeeApplication($employeeSettings,
$c['mysql'], $c['cryptographyService'], $c['asserts']);
return $employeeApplication;
};