File Dependency

Konfigurationdatei

<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

return [
    'environment' => Environment::DEV,
    // ...
];
configuration.php

Environment ist hier eine einfache enum:

<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

enum Environment
{
    case DEV;
    case PROD;
}
Environment.php

Praktisch, dass return so geht.

mit require kann ich die daten laden:

<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

require __DIR__ . '/autoload.php';
require __DIR__ . '/../vendor/autoload.php';

var_dump(require __DIR__ . '/config.php');
require.php
<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

use spriebsch\filesystem\File;

class Something
{
    public function __construct(private readonly File $configuration) {}

    public function doWork(): void
    {
        $configuration = $this->configuration->require();

        var_dump($configuration['environment']);
    }
}
Something.php
<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

use spriebsch\filesystem\Filesystem;

require __DIR__ . '/autoload.php';
require __DIR__ . '/../vendor/autoload.php';

$something = new Something(Filesystem::from(__DIR__ . '/configuration.php'));
var_dump($something);
example.php
<?php declare(strict_types=1);

namespace spriebsch\tfd\modernPhpDevelopment\objectOrientation\decoupling\fileDependency;

use spriebsch\filesystem\Filesystem;

require __DIR__ . '/autoload.php';
require __DIR__ . '/../vendor/autoload.php';

$something = new Something(Filesystem::from(__DIR__ . '/configuration.php'));
var_dump($something);
example-will-fail.php