for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Doctrine\Migrations\Configuration\Migration;
use Doctrine\Migrations\Configuration\Configuration;
use Doctrine\Migrations\Configuration\Migration\Exception\InvalidConfigurationFormat;
use function count;
use function pathinfo;
use const PATHINFO_EXTENSION;
/**
* @internal
*/
final class FormattedFile extends ConfigurationFile
{
/** @var callable[] */
private $loaders = [];
private function setDefaultLoaders() : void
$this->loaders = [
'json' => static function ($file) : ConfigurationLoader {
return new JsonFile($file);
},
'php' => static function ($file) : ConfigurationLoader {
return new PhpFile($file);
'xml' => static function ($file) : ConfigurationLoader {
return new XmlFile($file);
'yaml' => static function ($file) : ConfigurationLoader {
return new YamlFile($file);
'yml' => static function ($file) : ConfigurationLoader {
];
}
public function getConfiguration() : Configuration
if (count($this->loaders) === 0) {
$this->setDefaultLoaders();
$extension = pathinfo($this->file, PATHINFO_EXTENSION);
if (! isset($this->loaders[$extension])) {
throw InvalidConfigurationFormat::new($this->file);
return $this->loaders[$extension]($this->file)->getConfiguration();