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(): void {}
|
||
|
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; }
|
||
|
}
|