PluginProbe
WPIDE – File Manager & Code Editor / 3.5.9
WPIDE – File Manager & Code Editor v3.5.9
3.5.9 3.5.8 3.5.7 2.0.14 2.0.15 2.0.16 2.0.2 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.2 2.3 2.3.1 2.3.2 2.4.0 2.5 2.6 3.0 3.1 3.2 3.3 All 55 releases
wpide / vendor / nikic / php-parser / lib / PhpParser / Builder / Method.php

Method.php in WPIDE – File Manager & Code Editor 3.5.9, at vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php

147 lines 3.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php declare(strict_types=1);
2
3 namespace PhpParser\Builder;
4
5 use PhpParser;
6 use PhpParser\BuilderHelpers;
7 use PhpParser\Node;
8 use PhpParser\Node\Stmt;
9
10 class Method extends FunctionLike
11 {
12 protected $name;
13 protected $flags = 0;
14
15 /** @var array|null */
16 protected $stmts = [];
17
18 /** @var Node\AttributeGroup[] */
19 protected $attributeGroups = [];
20
21 /**
22 * Creates a method builder.
23 *
24 * @param string $name Name of the method
25 */
26 public function __construct(string $name) {
27 $this->name = $name;
28 }
29
30 /**
31 * Makes the method public.
32 *
33 * @return $this The builder instance (for fluid interface)
34 */
35 public function makePublic() {
36 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
37
38 return $this;
39 }
40
41 /**
42 * Makes the method protected.
43 *
44 * @return $this The builder instance (for fluid interface)
45 */
46 public function makeProtected() {
47 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
48
49 return $this;
50 }
51
52 /**
53 * Makes the method private.
54 *
55 * @return $this The builder instance (for fluid interface)
56 */
57 public function makePrivate() {
58 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
59
60 return $this;
61 }
62
63 /**
64 * Makes the method static.
65 *
66 * @return $this The builder instance (for fluid interface)
67 */
68 public function makeStatic() {
69 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_STATIC);
70
71 return $this;
72 }
73
74 /**
75 * Makes the method abstract.
76 *
77 * @return $this The builder instance (for fluid interface)
78 */
79 public function makeAbstract() {
80 if (!empty($this->stmts)) {
81 throw new \LogicException('Cannot make method with statements abstract');
82 }
83
84 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
85 $this->stmts = null; // abstract methods don't have statements
86
87 return $this;
88 }
89
90 /**
91 * Makes the method final.
92 *
93 * @return $this The builder instance (for fluid interface)
94 */
95 public function makeFinal() {
96 $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
97
98 return $this;
99 }
100
101 /**
102 * Adds a statement.
103 *
104 * @param Node|PhpParser\Builder $stmt The statement to add
105 *
106 * @return $this The builder instance (for fluid interface)
107 */
108 public function addStmt($stmt) {
109 if (null === $this->stmts) {
110 throw new \LogicException('Cannot add statements to an abstract method');
111 }
112
113 $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
114
115 return $this;
116 }
117
118 /**
119 * Adds an attribute group.
120 *
121 * @param Node\Attribute|Node\AttributeGroup $attribute
122 *
123 * @return $this The builder instance (for fluid interface)
124 */
125 public function addAttribute($attribute) {
126 $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
127
128 return $this;
129 }
130
131 /**
132 * Returns the built method node.
133 *
134 * @return Stmt\ClassMethod The built method node
135 */
136 public function getNode() : Node {
137 return new Stmt\ClassMethod($this->name, [
138 'flags' => $this->flags,
139 'byRef' => $this->returnByRef,
140 'params' => $this->params,
141 'returnType' => $this->returnType,
142 'stmts' => $this->stmts,
143 'attrGroups' => $this->attributeGroups,
144 ], $this->attributes);
145 }
146 }
147