Mercurial > hg > isophonics-drupal-site
comparison vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.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 Class_ extends Declaration | |
10 { | |
11 protected $name; | |
12 | |
13 protected $extends = null; | |
14 protected $implements = array(); | |
15 protected $flags = 0; | |
16 | |
17 protected $uses = array(); | |
18 protected $constants = array(); | |
19 protected $properties = array(); | |
20 protected $methods = array(); | |
21 | |
22 /** | |
23 * Creates a class builder. | |
24 * | |
25 * @param string $name Name of the class | |
26 */ | |
27 public function __construct($name) { | |
28 $this->name = $name; | |
29 } | |
30 | |
31 /** | |
32 * Extends a class. | |
33 * | |
34 * @param Name|string $class Name of class to extend | |
35 * | |
36 * @return $this The builder instance (for fluid interface) | |
37 */ | |
38 public function extend($class) { | |
39 $this->extends = $this->normalizeName($class); | |
40 | |
41 return $this; | |
42 } | |
43 | |
44 /** | |
45 * Implements one or more interfaces. | |
46 * | |
47 * @param Name|string ...$interfaces Names of interfaces to implement | |
48 * | |
49 * @return $this The builder instance (for fluid interface) | |
50 */ | |
51 public function implement() { | |
52 foreach (func_get_args() as $interface) { | |
53 $this->implements[] = $this->normalizeName($interface); | |
54 } | |
55 | |
56 return $this; | |
57 } | |
58 | |
59 /** | |
60 * Makes the class abstract. | |
61 * | |
62 * @return $this The builder instance (for fluid interface) | |
63 */ | |
64 public function makeAbstract() { | |
65 $this->setModifier(Stmt\Class_::MODIFIER_ABSTRACT); | |
66 | |
67 return $this; | |
68 } | |
69 | |
70 /** | |
71 * Makes the class final. | |
72 * | |
73 * @return $this The builder instance (for fluid interface) | |
74 */ | |
75 public function makeFinal() { | |
76 $this->setModifier(Stmt\Class_::MODIFIER_FINAL); | |
77 | |
78 return $this; | |
79 } | |
80 | |
81 /** | |
82 * Adds a statement. | |
83 * | |
84 * @param Stmt|PhpParser\Builder $stmt The statement to add | |
85 * | |
86 * @return $this The builder instance (for fluid interface) | |
87 */ | |
88 public function addStmt($stmt) { | |
89 $stmt = $this->normalizeNode($stmt); | |
90 | |
91 $targets = array( | |
92 'Stmt_TraitUse' => &$this->uses, | |
93 'Stmt_ClassConst' => &$this->constants, | |
94 'Stmt_Property' => &$this->properties, | |
95 'Stmt_ClassMethod' => &$this->methods, | |
96 ); | |
97 | |
98 $type = $stmt->getType(); | |
99 if (!isset($targets[$type])) { | |
100 throw new \LogicException(sprintf('Unexpected node of type "%s"', $type)); | |
101 } | |
102 | |
103 $targets[$type][] = $stmt; | |
104 | |
105 return $this; | |
106 } | |
107 | |
108 /** | |
109 * Returns the built class node. | |
110 * | |
111 * @return Stmt\Class_ The built class node | |
112 */ | |
113 public function getNode() { | |
114 return new Stmt\Class_($this->name, array( | |
115 'flags' => $this->flags, | |
116 'extends' => $this->extends, | |
117 'implements' => $this->implements, | |
118 'stmts' => array_merge($this->uses, $this->constants, $this->properties, $this->methods), | |
119 ), $this->attributes); | |
120 } | |
121 } |