Working With Directories
Directory loading is a good fit when your project already stores configuration in separate PHP files. Each file must return an array.
Example Layout
config/
|- app.php
|- database.php
`- local/
`- overrides.php
Example file contents:
// config/app.php
return [
'app' => [
'name' => 'Example App',
],
];
// config/database.php
return [
'database.host' => 'localhost',
'database.port' => 3306,
];
Loading Top-Level Files Only
use function FastForward\Config\configDir;
$config = configDir(__DIR__ . '/config');
This reads files directly inside config/
and ignores subdirectories.
Loading Recursively
use function FastForward\Config\config;
use function FastForward\Config\configDir;
$explicit = configDir(__DIR__ . '/config', recursive: true);
$implicit = config(__DIR__ . '/config');
Both examples load nested PHP files. The second form is useful when you want config()
to combine directories with arrays or providers in a single call.
Adding A Cache File
Both configDir()
and DirectoryConfig
support an optional cache file path through Laminas ConfigAggregator:
$config = configDir(
__DIR__ . '/config',
recursive: true,
cachedConfigFile: __DIR__ . '/../var/cache/config.php',
);
Tips
- Keep each file focused on one topic such as
app.php,database.php, orqueue.php. - Use recursive loading when you want subdirectories like
local/ormodules/. - Combine directories with arrays or providers when you need local overrides or package defaults.