mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-25 19:48:49 +02:00
We were on v3 that is no longer maintained and compatibility is annonced for PHP 7.2. v4 is active and supports PHP up to 8.0 No problem to update as this is only used in the config editor (\Combodo\iTop\Config\Validator\iTopConfigAstValidator)
65 lines
1.5 KiB
PHP
65 lines
1.5 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace PhpParser\Builder;
|
|
|
|
use PhpParser\Builder;
|
|
use PhpParser\BuilderHelpers;
|
|
use PhpParser\Node;
|
|
use PhpParser\Node\Stmt;
|
|
|
|
class TraitUse implements Builder
|
|
{
|
|
protected $traits = [];
|
|
protected $adaptations = [];
|
|
|
|
/**
|
|
* Creates a trait use builder.
|
|
*
|
|
* @param Node\Name|string ...$traits Names of used traits
|
|
*/
|
|
public function __construct(...$traits) {
|
|
foreach ($traits as $trait) {
|
|
$this->and($trait);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Adds used trait.
|
|
*
|
|
* @param Node\Name|string $trait Trait name
|
|
*
|
|
* @return $this The builder instance (for fluid interface)
|
|
*/
|
|
public function and($trait) {
|
|
$this->traits[] = BuilderHelpers::normalizeName($trait);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Adds trait adaptation.
|
|
*
|
|
* @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
|
|
*
|
|
* @return $this The builder instance (for fluid interface)
|
|
*/
|
|
public function with($adaptation) {
|
|
$adaptation = BuilderHelpers::normalizeNode($adaptation);
|
|
|
|
if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
|
|
throw new \LogicException('Adaptation must have type TraitUseAdaptation');
|
|
}
|
|
|
|
$this->adaptations[] = $adaptation;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Returns the built node.
|
|
*
|
|
* @return Node The built node
|
|
*/
|
|
public function getNode() : Node {
|
|
return new Stmt\TraitUse($this->traits, $this->adaptations);
|
|
}
|
|
}
|