/** * Print the configured options. */ protected function printConfiguration() { $this->title('Configuration'); $values = array_except($this->configuration->toArray(), ['definitions', 'middlewares']); $values = array_dot($values); foreach ($values as $key => &$value) { $value = ['<comment>' . $key . '</comment>', $value]; } $this->output->table(['Key', 'Value'], $values); }
/** * Merge two arrays recursively manually * because PHP is bad at it. * * @param array $configuration * * @return array */ protected function recursiveMerge(array $configuration) { foreach ($this->configuration->toArray() as $key => $value) { $current = array_get($configuration, $key); if (is_array($value)) { $current = $current ?: []; $configuration[$key] = array_merge($value, $current); } else { $configuration[$key] = $current !== null ? $current : $value; } } return $configuration; }
/** * Modify something in the configuration. * * @param string|array $configuration * @param null $value */ public function configure($configuration, $value = null) { if ($value && is_string($configuration)) { $configuration = [$configuration => $value]; } // Merge stuff manually cause PHP is bad at it foreach ($this->configuration->toArray() as $key => $value) { $current = array_get($configuration, $key); if (is_array($value)) { $current = $current ?: []; $configuration[$key] = array_merge($value, $current); } else { $configuration[$key] = $current !== null ? $current : $value; } } $this->configuration = new Configuration($configuration); }