Security update for Core, with self-updated composer
[yaffs-website] / vendor / nikic / php-parser / lib / PhpParser / Builder / Trait_.php
1 <?php
2
3 namespace PhpParser\Builder;
4
5 use PhpParser;
6 use PhpParser\Node\Stmt;
7
8 class Trait_ extends Declaration
9 {
10     protected $name;
11     protected $uses = array();
12     protected $properties = array();
13     protected $methods = array();
14
15     /**
16      * Creates an interface builder.
17      *
18      * @param string $name Name of the interface
19      */
20     public function __construct($name) {
21         $this->name = $name;
22     }
23
24     /**
25      * Adds a statement.
26      *
27      * @param Stmt|PhpParser\Builder $stmt The statement to add
28      *
29      * @return $this The builder instance (for fluid interface)
30      */
31     public function addStmt($stmt) {
32         $stmt = $this->normalizeNode($stmt);
33
34         if ($stmt instanceof Stmt\Property) {
35             $this->properties[] = $stmt;
36         } else if ($stmt instanceof Stmt\ClassMethod) {
37             $this->methods[] = $stmt;
38         } else if ($stmt instanceof Stmt\TraitUse) {
39             $this->uses[] = $stmt;
40         } else {
41             throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
42         }
43
44         return $this;
45     }
46
47     /**
48      * Returns the built trait node.
49      *
50      * @return Stmt\Trait_ The built interface node
51      */
52     public function getNode() {
53         return new Stmt\Trait_(
54             $this->name, array(
55                 'stmts' => array_merge($this->uses, $this->properties, $this->methods)
56             ), $this->attributes
57         );
58     }
59 }