Pink-Crab / Perique-BladeOne-Provider

A BladeOne Provider for the PinkCrab Renderable Interface.
0 stars 0 forks source link

Create a config class #6

Closed gin0115 closed 3 years ago

gin0115 commented 3 years ago

To make it easier to create dynamic content for menus and sidebars and share these as either global variables or directives.

gin0115 commented 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;
}