Registering Extensions
If you are using the config/set/default.php
configuration file, your extension classes are already registered as services.
<?php
use Bartlett\CompatInfo\Application\Extension\ExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $containerConfigurator): void
{
$services = $containerConfigurator->services();
$services->instanceof(ExtensionInterface::class)
->tag('app.extension')
;
}
Hooks
CompatInfo Extensions may implement one or more of these interfaces:
-
BeforeAnalysisInterface
- called before CompatInfo begins to run analysis. -
AfterAnalysisInterface
- called after CompatInfo has completed its analysis. Use this hook if you want to do something with the analysis results. -
BeforeFileAnalysisInterface
- called before CompatInfo analyzes a file. -
AfterFileAnalysisInterface
- called after CompatInfo analyzes a file. -
BeforeTraverseAstInterface
- called once before AST traversal. -
AfterTraverseAstInterface
- called once after AST traversal. -
BeforeProcessNodeInterface
- called before entering a node. -
AfterProcessNodeInterface
- called after leaving a node. -
BeforeSetupSniffInterface
- called before initializes a sniff. -
AfterTearDownSniffInterface
- called after tear down a sniff. -
BeforeProcessSniffInterface
- called before entering a sniff. -
AfterProcessSniffInterface
- called after leaving a sniff.
Furthermore extensions may implement the Symfony\Component\EventDispatcher\EventSubscriberInterface
.
See built-in extensions Application\Extension\Logger
and Application\Extension\ProgressBar
as examples.