Using handler files


This feature is for expert users with a modicum of PHP software development experience.

UNiTE 5 and later support handler files. These are PHP files which return a callable (typically an anonymous invokable class object) which is executed at the end of the restoration process.

A typical handler file looks like this:


return new class {
    public function __invoke(
        \Joomla\Application\AbstractApplication         $app,
        \Symfony\Component\Console\Input\InputInterface $input
    ): void
       // Your handler code goes here

The sample file above returns an anonymous invokable class object. The code to run is inside the __invoke method.

The method is passed two objects from UNiTE:

  • $app. This is the UNiTE application object. Please note that this is NOT a Joomla CMS application; we are simply using our own copy of the Joomla Framework which is separate to the Joomla CMS.

  • $input. This is a Symfony Console input object. It gives you access to the arguments and options passed to UNiTE in the command line which executed it.

The application object has the $app->container property which returns the Dependency Injection Container of the UNiTE application. You can use it to get access to UNiTE's PSR-3 logger object through it:

$logger = $app->container->get(LoggerInterface::class);
$logger->info('Hello from the custom hander!');

Everything you send to the logger is, of course, written to the log file. Depending on your use of the --verbose and --quiet options in the command line some or all of that information will be printed in UNiTE's output.

Moreover, you can get the current UNiTE job configuration (a representation of your configuration file) using $app->get('job') which returns an object of the \Akeeba\UNiTE\DataShape\JobDefinition type. This allows you to get access to all the information in the configuration file. You could, for example, get the path where the restored site is by doing $app->get('job')->siteInfo->absolutepath.

You can understand more what is possible by studying the classes under the DataShape directory of UNiTE's PHAR package. You can very easily find instructions on extracting PHAR archives online.