Mercurial > hg > isophonics-drupal-site
comparison vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.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\Name; | |
7 use PhpParser\Node\Stmt; | |
8 | |
9 class Interface_ extends Declaration | |
10 { | |
11 protected $name; | |
12 protected $extends = array(); | |
13 protected $constants = array(); | |
14 protected $methods = array(); | |
15 | |
16 /** | |
17 * Creates an interface builder. | |
18 * | |
19 * @param string $name Name of the interface | |
20 */ | |
21 public function __construct($name) { | |
22 $this->name = $name; | |
23 } | |
24 | |
25 /** | |
26 * Extends one or more interfaces. | |
27 * | |
28 * @param Name|string ...$interfaces Names of interfaces to extend | |
29 * | |
30 * @return $this The builder instance (for fluid interface) | |
31 */ | |
32 public function extend() { | |
33 foreach (func_get_args() as $interface) { | |
34 $this->extends[] = $this->normalizeName($interface); | |
35 } | |
36 | |
37 return $this; | |
38 } | |
39 | |
40 /** | |
41 * Adds a statement. | |
42 * | |
43 * @param Stmt|PhpParser\Builder $stmt The statement to add | |
44 * | |
45 * @return $this The builder instance (for fluid interface) | |
46 */ | |
47 public function addStmt($stmt) { | |
48 $stmt = $this->normalizeNode($stmt); | |
49 | |
50 $type = $stmt->getType(); | |
51 switch ($type) { | |
52 case 'Stmt_ClassConst': | |
53 $this->constants[] = $stmt; | |
54 break; | |
55 | |
56 case 'Stmt_ClassMethod': | |
57 // we erase all statements in the body of an interface method | |
58 $stmt->stmts = null; | |
59 $this->methods[] = $stmt; | |
60 break; | |
61 | |
62 default: | |
63 throw new \LogicException(sprintf('Unexpected node of type "%s"', $type)); | |
64 } | |
65 | |
66 return $this; | |
67 } | |
68 | |
69 /** | |
70 * Returns the built interface node. | |
71 * | |
72 * @return Stmt\Interface_ The built interface node | |
73 */ | |
74 public function getNode() { | |
75 return new Stmt\Interface_($this->name, array( | |
76 'extends' => $this->extends, | |
77 'stmts' => array_merge($this->constants, $this->methods), | |
78 ), $this->attributes); | |
79 } | |
80 } |