nur-sery/nur_src/v/base/TComponent.php

70 lines
2.0 KiB
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?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; }
}