1. Go to this page and download the library: Download crell/config library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
crell / config example snippets
use Crell\Config\LayeredLoader;
use Crell\Config\YamlFileSource;
class EditorSettings
{
public function __construct(
public readonly string $color,
public readonly string $bgcolor,
public readonly int $fontSize = 14,
) {}
}
$loader = new LayeredLoader([
new YamlFileSource('./config/common'),
new YamlFileSource('./config/' . APP_ENV),
]);
$editorConfig = $loader->load(EditorSettings::class);
use Crell\Config\LayeredLoader;
use Crell\Config\JsonFileSource;
class EditorSettings
{
public function __construct(
public readonly string $color,
public readonly string $bgcolor,
public readonly int $fontSize = 14,
) {}
}
$loader = new LayeredLoader([
new JsonFileSource('./config/common'),
new JsonFileSource('./config/' . APP_ENV),
]);
$editorConfig = $loader->load(EditorSettings::class);
use Crell\Config\Config;
#[Config(key: 'editor_settings')]
class EditorSettings
{
public function __construct(
public readonly string $color,
public readonly string $bgcolor,
public readonly int $fontSize = 14,
) {}
}
use Crell\Config\LayeredLoader;
use Crell\Config\YamlFileSource;
use Crell\Config\SerializedFilesystemCache;
$loader = new LayeredLoader([
new YamlFileSource('./config/common'),
new YamlFileSource('./config/' . APP_ENV),
]);
$cachedLoader = new SerializedFilesytemCache($loader, '/path/to/cache/dir');
$cachedLoader->load(EditorSettings::class);
use Crell\Config\LayeredLoader;
use Crell\Config\JsonFileSource;
use Crell\Config\SerializedFilesystemCache;
$loader = new LayeredLoader([
new JsonFileSource('./config/common'),
new JsonFileSource('./config/' . APP_ENV),
]);
$cachedLoader = new SerializedFilesytemCache($loader, '/path/to/cache/dir');
$cachedLoader->load(EditorSettings::class);
class EditorForm
{
public function __construct(
private EditorSettings $settings,
) {}
public function renderForm(): string
{
// Do stuff here.
$this->settings->color;
...
}
}
class EditorFormTest extends TestCase
{
#[Test]
public function some_test(): void
{
$settings = new EditorSettings(color: '#fff', bgcolor: '#000');
$subject = new EditorForm($settings);
// Make various assertions.
}
}
namespace App\Providers;
use Crell\Config\ConfigLoader;
use Crell\Config\LayeredLoader;
use Crell\Config\PhpFileSource;
use Crell\Config\SerializedFilesystemCache;
use Crell\Serde\Serde;
use Crell\Serde\SerdeCommon;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Support\ServiceProvider;
class ConfigServiceProvider extends ServiceProvider
{
public $singletons = [
// Wire up Serde first. See its documentation for more
// robust ways to configure it.
Serde::class => SerdeCommon::class,
];
public function register(): void
{
// Set up some sources.
$this->app->singleton('base_config', fn(Application $app)
=> new PhpFileSource('config/base')
);
$this->app->singleton('env_config', fn(Application $app)
=> new PhpFileSource('config/'. APP_ENV)
);
// Register the loader, and wrap it in a cache.
$this->app->singleton(LayeredLoader::class, fn(Application $app)
=> new LayeredLoader(
[$app['base_config'], $app['env_config']],
$app[Serde::class],
)
);
$this->app->singleton(ConfigLoader::class, fn(Application $app)
=> new SerializedFilesystemCache($app[LayeredLoader::class], 'cache/config')
);
// Now register the config objects.
// You could also use a compiler pass to discover these from disk and
// auto-register them, if your framework has that ability.
$this->app->singleton(EditorSettings::class, fn(Application $app)
=> $app[ConfigLoader::class]->load(EditorSettings::class);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.