engelsystem/src/Helpers/ConfigureEnvironmentService...

68 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace Engelsystem\Helpers;
use Carbon\CarbonTimeZone;
use Engelsystem\Config\Config;
use Engelsystem\Container\ServiceProvider;
use Engelsystem\Environment;
use Engelsystem\Exceptions\Handler;
use Engelsystem\Exceptions\Handlers\HandlerInterface;
class ConfigureEnvironmentServiceProvider extends ServiceProvider
{
public function register(): void
{
/** @var Config $config */
$config = $this->app->get('config');
$timezone = new CarbonTimeZone($config->get('timezone'));
$this->setTimeZone($timezone);
$this->displayErrors(false);
if ($config->get('environment') == 'development') {
$this->displayErrors(true);
$this->errorReporting(E_ALL);
$this->setupDevErrorHandler();
}
}
/**
* @codeCoverageIgnore
*/
protected function setTimeZone(CarbonTimeZone $timeZone): void
{
ini_set('date.timezone', (string) $timeZone);
date_default_timezone_set((string) $timeZone);
}
/**
* @codeCoverageIgnore
*/
protected function displayErrors(bool $displayErrors): void
{
ini_set('display_errors', $displayErrors);
}
/**
* @codeCoverageIgnore
*/
protected function errorReporting(int $errorReporting): void
{
error_reporting($errorReporting);
}
/**
* Setup the development error handler
*/
protected function setupDevErrorHandler(): void
{
/** @var Handler $errorHandler */
$errorHandler = $this->app->get('error.handler');
$errorHandler->setEnvironment(Environment::DEVELOPMENT);
$this->app->bind(HandlerInterface::class, 'error.handler.development');
}
}