Moved development error handler setup to ConfigureEnvironmentServiceProvider

This commit is contained in:
Igor Scheller 2020-04-21 12:39:54 +02:00 committed by msquare
parent 2605204af8
commit 984ce25728
3 changed files with 22 additions and 14 deletions

View File

@ -2,16 +2,12 @@
use Engelsystem\Application; use Engelsystem\Application;
use Engelsystem\Config\Config; use Engelsystem\Config\Config;
use Engelsystem\Exceptions\Handler;
use Engelsystem\Exceptions\Handlers\HandlerInterface;
/** /**
* Include the autoloader * Include the autoloader
*/ */
require_once __DIR__ . '/autoload.php'; require_once __DIR__ . '/autoload.php';
/** /**
* Initialize and bootstrap the application * Initialize and bootstrap the application
*/ */
@ -19,13 +15,3 @@ $app = new Application(realpath(__DIR__ . DIRECTORY_SEPARATOR . '..'));
$appConfig = $app->make(Config::class); $appConfig = $app->make(Config::class);
$appConfig->set(require config_path('app.php')); $appConfig->set(require config_path('app.php'));
$app->bootstrap($appConfig); $app->bootstrap($appConfig);
/**
* Configure environment
*/
if (config('environment') == 'development') {
$errorHandler = $app->get('error.handler');
$errorHandler->setEnvironment(Handler::ENV_DEVELOPMENT);
$app->bind(HandlerInterface::class, 'error.handler.development');
}

View File

@ -5,6 +5,8 @@ namespace Engelsystem\Helpers;
use Carbon\CarbonTimeZone; use Carbon\CarbonTimeZone;
use Engelsystem\Config\Config; use Engelsystem\Config\Config;
use Engelsystem\Container\ServiceProvider; use Engelsystem\Container\ServiceProvider;
use Engelsystem\Exceptions\Handler;
use Engelsystem\Exceptions\Handlers\HandlerInterface;
class ConfigureEnvironmentServiceProvider extends ServiceProvider class ConfigureEnvironmentServiceProvider extends ServiceProvider
{ {
@ -20,6 +22,7 @@ class ConfigureEnvironmentServiceProvider extends ServiceProvider
if ($config->get('environment') == 'development') { if ($config->get('environment') == 'development') {
$this->displayErrors(true); $this->displayErrors(true);
$this->errorReporting(E_ALL); $this->errorReporting(E_ALL);
$this->setupDevErrorHandler();
} }
} }
@ -50,4 +53,15 @@ class ConfigureEnvironmentServiceProvider extends ServiceProvider
{ {
error_reporting($errorReporting); error_reporting($errorReporting);
} }
/**
* Setup the development error handler
*/
protected function setupDevErrorHandler()
{
/** @var Handler $errorHandler */
$errorHandler = $this->app->get('error.handler');
$errorHandler->setEnvironment(Handler::ENV_DEVELOPMENT);
$this->app->bind(HandlerInterface::class, 'error.handler.development');
}
} }

View File

@ -4,6 +4,7 @@ namespace Engelsystem\Test\Unit\Helpers;
use Carbon\CarbonTimeZone; use Carbon\CarbonTimeZone;
use Engelsystem\Config\Config; use Engelsystem\Config\Config;
use Engelsystem\Exceptions\Handler;
use Engelsystem\Helpers\ConfigureEnvironmentServiceProvider; use Engelsystem\Helpers\ConfigureEnvironmentServiceProvider;
use Engelsystem\Test\Unit\ServiceProviderTest; use Engelsystem\Test\Unit\ServiceProviderTest;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
@ -12,12 +13,16 @@ class ConfigureEnvironmentServiceProviderTest extends ServiceProviderTest
{ {
/** /**
* @covers \Engelsystem\Helpers\ConfigureEnvironmentServiceProvider::register * @covers \Engelsystem\Helpers\ConfigureEnvironmentServiceProvider::register
* @covers \Engelsystem\Helpers\ConfigureEnvironmentServiceProvider::setupDevErrorHandler
*/ */
public function testRegister() public function testRegister()
{ {
$config = new Config(['timezone' => 'Australia/Eucla', 'environment' => 'production']); $config = new Config(['timezone' => 'Australia/Eucla', 'environment' => 'production']);
$this->app->instance('config', $config); $this->app->instance('config', $config);
$handler = new Handler();
$this->app->instance('error.handler', $handler);
/** @var ConfigureEnvironmentServiceProvider|MockObject $serviceProvider */ /** @var ConfigureEnvironmentServiceProvider|MockObject $serviceProvider */
$serviceProvider = $this->getMockBuilder(ConfigureEnvironmentServiceProvider::class) $serviceProvider = $this->getMockBuilder(ConfigureEnvironmentServiceProvider::class)
->setConstructorArgs([$this->app]) ->setConstructorArgs([$this->app])
@ -37,7 +42,10 @@ class ConfigureEnvironmentServiceProviderTest extends ServiceProviderTest
->with(E_ALL); ->with(E_ALL);
$serviceProvider->register(); $serviceProvider->register();
$this->assertNotEquals(Handler::ENV_DEVELOPMENT, $handler->getEnvironment());
$config->set('environment', 'development'); $config->set('environment', 'development');
$serviceProvider->register(); $serviceProvider->register();
$this->assertEquals(Handler::ENV_DEVELOPMENT, $handler->getEnvironment());
} }
} }