public function register() { $config = ConfigLoader::load(); if ($this->app['config']->has('kewilayahan')) { $config->appends($this->app['config']->get('kewilayahan')); } $this->app['config']->set(['kewilayahan' => $config->toArray()]); $this->app->bind(DataSourceContract::class, function ($app) { $datasource = $app['config']->get('kewilayahan.default.datasource', 'eloquent'); if ($datasource === 'eloquent') { $class = $app['config']->get('kewilayahan.datasources.eloquent.class'); $models = $app['config']->get('kewilayahan.datasources.eloquent.models'); return new $class($models); } else { $class = $app['config']->get('kewilayahan.datasources.' . $datasource . '.class'); return new $class(); } }); $this->app->bind(OutputContract::class, function ($app) { $output = $app['config']->get('kewilayahan.default.output', 'json'); $class = $app['config']->get('kewilayahan.outputs.' . $output); return new $class(); }); $this->app->bind('kewilayahan', function ($app) { $datasource = $app->make(DataSourceContract::class); $output = $app->make(OutputContract::class); return new Kewilayahan($datasource, $output); }); }
public static function make($type, array $params = []) { if ($type instanceof OutputContract) { return $type; } $config = ConfigLoader::load()->toArray(); $output = $config['outputs']; $class = $output[$type]; $instance = new ReflectionClass($class); return $instance->newInstanceArgs($params); }
public function loadConfig(array $config = []) { $loader = ConfigLoader::load(); $loader->appends($config); $this->config = $loader->toArray(); return $this; }