Mercurial > hg > isophonics-drupal-site
annotate vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | |
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 } |