68 lines
1.7 KiB
PHP
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');
|
|
}
|
|
}
|