ampproject / px-toolbox-php

Apache License 2.0
8 stars 4 forks source link

Add configurations for PX Engine tools #27

Open ediamin opened 2 years ago

ediamin commented 2 years ago

Fixes #18

The goal of this PR is to create a configuration system for the individual PXE tools, that can be provided via the PX Engine when it is instantiated. With this system we can create our own configuration and provide it to the Engine like this,

<?php 

use PageExperience\Engine;
use PageExperience\Engine\Tool\DefaultConfiguration;

class MyConfiguration extends DefaultConfiguration
{
    // extend the default configuration...
}

$pxEngine = new Engine(null, null, new MyConfiguration());

Then in a tool class we can use the configuration like following,

<?php 

use AmpProject\RemoteGetRequest;
use PageExperience\Engine\Tool\Configurable;
use PageExperience\Engine\Tool\OptimizationTool;
use PageExperience\Engine\Tool\ToolConfiguration;

final class MyPXETool implements OptimizationTool, Configurable 
{
    public function __construct(RemoteGetRequest $remoteRequest, ToolConfiguration $configuration)
    {
        $this->remoteRequest = $remoteRequest;
        $this->configuration = $configuration;
    }       
}

Todo: