Installation:
composer require elao/parameterizer
(Note: The package is outdated; ensure compatibility with your Laravel version.)
Basic Usage:
use Elao\Parameterizer\ParameterizerFactory;
use Elao\Parameterizer\Inflector;
$factory = new ParameterizerFactory(new Inflector());
$parameterizer = $factory->create('config');
// Create a pattern "theme" with parameters
$parameterizer->create('theme')
->create('color', '#ffffff')
->create('font', 'Arial');
First Use Case: Dynamically manage configuration values (e.g., admin panel settings) with a structured hierarchy. Retrieve values via:
$themeColor = $parameterizer->getValue('theme', 'color'); // '#ffffff'
Pattern for Grouping:
Use Pattern to logically group related parameters (e.g., theme, database).
$parameterizer->create('database')
->create('host', 'localhost')
->create('port', 3306);
Value Synchronization: Merge external values (e.g., from a form or API) into the parameterizer:
$parameterizer->mergeValues([
'theme' => ['color' => '#000000'],
'database' => ['port' => 3307]
]);
Service Container Binding: Bind the factory to Laravel’s container for dependency injection:
$this->app->bind('parameterizer.factory', function () {
return new ParameterizerFactory(new Inflector());
});
Configuration Management: Load/save parameterizer values to/from Laravel’s config:
// Save to config
config(['admin.theme' => $parameterizer->getValues()]);
// Load from config
$parameterizer->mergeValues(config('admin.theme'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/dat-gui/0.5/dat.gui.min.js"></script>
<script>
var gui = new dat.GUI();
{{ elao_parameterizer_dat_gui_render_javascript({'gui': 'gui'}) }}
</script>
(Note: Requires manual setup for Blade templates.)Deprecated Package:
spatie/laravel-settings or custom solutions.No Laravel-Specific Features:
dat.GUI Dependency:
dat.GUI). Ensure it’s loaded before rendering.Value Merging Issues:
Use getValues() to inspect the current state after merging:
dd($parameterizer->getValues());
Option Conflicts:
Explicitly set options to override defaults (e.g., label):
$parameter->setOptions(['label' => 'Custom Label']);
Custom Inflector:
Override the default Inflector for localized labels:
$factory = new ParameterizerFactory(new CustomInflector());
Validation:
Extend the Parameter class to add validation logic:
class ValidatedParameter extends Parameter {
public function setValue($value) {
if (!preg_match('/^[A-Fa-f0-9]{6}$/', $value)) {
throw new \InvalidArgumentException('Invalid color format.');
}
parent::setValue($value);
}
}
Event Dispatching: Use Laravel events to trigger actions on value changes:
$parameterizer->setValue('theme.color', '#ff0000');
event(new ThemeColorChanged($parameterizer->getValue('theme.color')));
null (not empty strings/arrays). Use defaults:
$label = $parameter->getOption('label', 'Default Label');
How can I help you explore Laravel packages today?