You are viewing documentation for an outdated version. It is no longer supported!
Custom File Parsers
If the default supported file parsers are insufficient for your, then you can create your own. This can be achieved by extending the ParserBase
abstraction.
<?php
namespace Acme\Config\Parsers;
use Aedart\Config\Parsers\Files\ParserBase;
class XmlParser extends ParserBase
{
public static function getFileType(): string
{
return 'xml';
}
public function parse(string $content): array
{
// ... implementation not shown ...
}
}
Factory
To use your custom file parser, you must either create your own file parser factory or extend the existing FileParserFactory
. The following example shows how you could add your custom file parser to a custom factory, by extending the default provided file parser factory.
<?php
namespace Acme\Config\Parsers;
use Aedart\Config\Parsers\Factories\FileParserFactory;
use Aedart\Contracts\Config\Parsers\FileParser;
use Acme\Config\Parsers\XmlParser;
class CustomFileParserFactory extends FileParserFactory
{
public function make(string $type): FileParser
{
if($type === XmlParser::getFileType()){
return new XmlParser();
}
return parent::make($type);
}
}
Use Factory
Lastly, you need to specify what factory instance the configuration loader should use.
use Acme\Config\Parsers\CustomFileParserFactory;
$loader->setParserFactory(new CustomFileParserFactory());