1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?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);
- }
- }
|