_autoConfig($config, ['foo']); * } * } * * $instance = new Bar(['foo' => 'baz']); * ``` * * The `foo` property would automatically be set to `'baz'`. If `foo` was an array, * `$auto` could be set to `['foo' => 'merge']`, and the config value of `'foo'` * would be merged with the default value of the `foo` property and assigned to it. * * @param array $config * @param array $auto An array of values that should be processed. Each value should have * a matching protected property (prefixed with `_`) defined in the class. If the * property is an array, the property name should be the key and the value should * be `'merge'`. * @return void */ protected function _autoConfig(array $config, array $auto) { foreach ($auto as $key => $flag) { if (!isset($config[$key]) && !isset($config[$flag])) { continue; } if ($flag === 'merge') { $this->{"_{$key}"} = $config[$key] + $this->{"_{$key}"}; } else { $this->{"_$flag"} = $config[$flag]; } } } } ?>