From a53ff9fb8f8ab563d74777d81a10376d5ec0b9a4 Mon Sep 17 00:00:00 2001 From: Jarek Tkaczyk Date: Sun, 4 Mar 2018 19:50:35 +0800 Subject: [PATCH] allow adding custom casters and overriding laravel's own via config --- src/Console/TinkerCommand.php | 22 +++++++++++++++++++++- src/TinkerServiceProvider.php | 6 ++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Console/TinkerCommand.php b/src/Console/TinkerCommand.php index c95f699..fbd2a3e 100644 --- a/src/Console/TinkerCommand.php +++ b/src/Console/TinkerCommand.php @@ -33,6 +33,13 @@ class TinkerCommand extends Command */ protected $description = 'Interact with your application'; + /** + * Custom, user-defined casters for even better experience. + * + * @var array + */ + protected $casters = []; + /** * Execute the console command. * @@ -102,7 +109,20 @@ protected function getCasters() $casters['Illuminate\Foundation\Application'] = 'Laravel\Tinker\TinkerCaster::castApplication'; } - return $casters; + return array_merge($casters, $this->casters); + } + + /** + * Set cusomized casters for this tinker session. + * + * @param array $casters + * @return $this + */ + public function setCasters(array $casters) + { + $this->casters = $casters; + + return $this; } /** diff --git a/src/TinkerServiceProvider.php b/src/TinkerServiceProvider.php index c4101b9..f120281 100644 --- a/src/TinkerServiceProvider.php +++ b/src/TinkerServiceProvider.php @@ -21,8 +21,10 @@ class TinkerServiceProvider extends ServiceProvider */ public function register() { - $this->app->singleton('command.tinker', function () { - return new TinkerCommand; + $this->app->singleton('command.tinker', function ($app) { + return (new TinkerCommand)->setCasters( + $app['config']->get('tinker.casters', []) + ); }); $this->commands(['command.tinker']);