comparison vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 5fb285c0d0e3
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
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 }