annotate vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@17 1 <?php declare(strict_types=1);
Chris@17 2
Chris@17 3 namespace PhpParser\Builder;
Chris@17 4
Chris@17 5 use PhpParser\Builder;
Chris@17 6 use PhpParser\BuilderHelpers;
Chris@17 7 use PhpParser\Node;
Chris@17 8 use PhpParser\Node\Stmt;
Chris@17 9
Chris@17 10 class TraitUse implements Builder
Chris@17 11 {
Chris@17 12 protected $traits = [];
Chris@17 13 protected $adaptations = [];
Chris@17 14
Chris@17 15 /**
Chris@17 16 * Creates a trait use builder.
Chris@17 17 *
Chris@17 18 * @param Node\Name|string ...$traits Names of used traits
Chris@17 19 */
Chris@17 20 public function __construct(...$traits) {
Chris@17 21 foreach ($traits as $trait) {
Chris@17 22 $this->and($trait);
Chris@17 23 }
Chris@17 24 }
Chris@17 25
Chris@17 26 /**
Chris@17 27 * Adds used trait.
Chris@17 28 *
Chris@17 29 * @param Node\Name|string $trait Trait name
Chris@17 30 *
Chris@17 31 * @return $this The builder instance (for fluid interface)
Chris@17 32 */
Chris@17 33 public function and($trait) {
Chris@17 34 $this->traits[] = BuilderHelpers::normalizeName($trait);
Chris@17 35 return $this;
Chris@17 36 }
Chris@17 37
Chris@17 38 /**
Chris@17 39 * Adds trait adaptation.
Chris@17 40 *
Chris@17 41 * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
Chris@17 42 *
Chris@17 43 * @return $this The builder instance (for fluid interface)
Chris@17 44 */
Chris@17 45 public function with($adaptation) {
Chris@17 46 $adaptation = BuilderHelpers::normalizeNode($adaptation);
Chris@17 47
Chris@17 48 if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
Chris@17 49 throw new \LogicException('Adaptation must have type TraitUseAdaptation');
Chris@17 50 }
Chris@17 51
Chris@17 52 $this->adaptations[] = $adaptation;
Chris@17 53 return $this;
Chris@17 54 }
Chris@17 55
Chris@17 56 /**
Chris@17 57 * Returns the built node.
Chris@17 58 *
Chris@17 59 * @return Node The built node
Chris@17 60 */
Chris@17 61 public function getNode() : Node {
Chris@17 62 return new Stmt\TraitUse($this->traits, $this->adaptations);
Chris@17 63 }
Chris@17 64 }