Closed gin0115 closed 3 years ago
namespace PinkCrab\Fisheries;
use PcPeriqueFisheries\PinkCrab\Loader\Hook_Loader;
use PcPeriqueFisheries\PinkCrab\BladeOne\BladeOne_Provider;
use PcPeriqueFisheries\PinkCrab\Perique\Interfaces\Hookable;
use PcPeriqueFisheries\PinkCrab\Perique\Interfaces\Renderable;
abstract class Abstract_BladeOne_Config implements Hookable {
/**
* The current view model.
*
* @var Renderable
*/
protected $renderable;
final public function register( Hook_Loader $loader ): void {
$loader->action( 'init', array( $this, 'configure_blade' ), 1, 2 );
}
/**
* Sets renderable from DI when constructing.
*
* @param \PcPeriqueFisheries\PinkCrab\Perique\Interfaces\Renderable $renderable
* @return void
*/
public function set_renderable( Renderable $renderable ) {
$this->renderable = $renderable;
}
/**
* Will call the config class, if using BladeOne.
*
* @return void
*/
final public function configure_blade_handler(): void {
if ( ! is_null( $this->renderable ) && is_a( $this->renderable, BladeOne_Provider::class ) ) {
$this->config( $this->renderable );
}
}
abstract public function config( BladeOne_Provider $blade_provider): void;
}
To make it easier to create dynamic content for menus and sidebars and share these as either global variables or directives.