70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\v\base;
 | 
						|
 | 
						|
use nur\v\model\IPageContainer;
 | 
						|
use nur\v\model\IPlugin;
 | 
						|
use Throwable;
 | 
						|
 | 
						|
/**
 | 
						|
 * Trait TComponent: implémentation réutilisable de IComponent
 | 
						|
 */
 | 
						|
trait TComponent {
 | 
						|
  #############################################################################
 | 
						|
  # IChildComponent
 | 
						|
 | 
						|
  /** @var IPageContainer */
 | 
						|
  protected $container;
 | 
						|
 | 
						|
  function initContainer(IPageContainer $container): void {
 | 
						|
    $this->container = $container;
 | 
						|
  }
 | 
						|
 | 
						|
  function addPlugin($plugin, ?string $name=null): IPlugin {
 | 
						|
    return $this->container->addPlugin($plugin, $name);
 | 
						|
  }
 | 
						|
 | 
						|
  function haveError(): bool {
 | 
						|
    return $this->container->haveError();
 | 
						|
  }
 | 
						|
 | 
						|
  function setError(?string $message, ?Throwable $exception=null): void {
 | 
						|
    $this->container->setError($message, $exception);
 | 
						|
  }
 | 
						|
 | 
						|
  function getError(): ?array {
 | 
						|
    return $this->container->getError();
 | 
						|
  }
 | 
						|
 | 
						|
  #############################################################################
 | 
						|
  # IComponent
 | 
						|
 | 
						|
  protected $prepareDone = false;
 | 
						|
  function beforePrepare(): void {}
 | 
						|
  function prepare(): void {}
 | 
						|
  function afterPrepare(): void { $this->prepareDone = true; }
 | 
						|
  function didPrepare(): bool { return $this->prepareDone; }
 | 
						|
 | 
						|
  protected $syncConfigDone = false;
 | 
						|
  function beforeConfig(array &$config): void {}
 | 
						|
  function config(array &$config): void {}
 | 
						|
  function afterConfig(): void { $this->syncConfigDone = true; }
 | 
						|
  function didConfig(): bool { return $this->syncConfigDone; }
 | 
						|
  function configGet(string $name) {
 | 
						|
    return $this->container->getConfig()[$name];
 | 
						|
  }
 | 
						|
 | 
						|
  protected $setupDone = false;
 | 
						|
  function beforeSetup(): void {}
 | 
						|
  function setup() {}
 | 
						|
  function afterSetup(): void { $this->setupDone = true; }
 | 
						|
  function didSetup(): bool { return $this->setupDone; }
 | 
						|
 | 
						|
  function haveContent(): bool { return true; }
 | 
						|
 | 
						|
  protected $teardownDone = false;
 | 
						|
  function beforeTeardown(): void {}
 | 
						|
  function teardown(): void {}
 | 
						|
  function afterTeardown(): void { $this->teardownDone = true; }
 | 
						|
  function didTeardown(): bool { return $this->teardownDone; }
 | 
						|
}
 |