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 / Interface_.php

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

94 lines 2.4 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\Name;
9 use PhpParser\Node\Stmt;
10
11 class Interface_ extends Declaration
12 {
13 protected $name;
14 protected $extends = [];
15 protected $constants = [];
16 protected $methods = [];
17
18 /** @var Node\AttributeGroup[] */
19 protected $attributeGroups = [];
20
21 /**
22 * Creates an interface builder.
23 *
24 * @param string $name Name of the interface
25 */
26 public function __construct(string $name) {
27 $this->name = $name;
28 }
29
30 /**
31 * Extends one or more interfaces.
32 *
33 * @param Name|string ...$interfaces Names of interfaces to extend
34 *
35 * @return $this The builder instance (for fluid interface)
36 */
37 public function extend(...$interfaces) {
38 foreach ($interfaces as $interface) {
39 $this->extends[] = BuilderHelpers::normalizeName($interface);
40 }
41
42 return $this;
43 }
44
45 /**
46 * Adds a statement.
47 *
48 * @param Stmt|PhpParser\Builder $stmt The statement to add
49 *
50 * @return $this The builder instance (for fluid interface)
51 */
52 public function addStmt($stmt) {
53 $stmt = BuilderHelpers::normalizeNode($stmt);
54
55 if ($stmt instanceof Stmt\ClassConst) {
56 $this->constants[] = $stmt;
57 } elseif ($stmt instanceof Stmt\ClassMethod) {
58 // we erase all statements in the body of an interface method
59 $stmt->stmts = null;
60 $this->methods[] = $stmt;
61 } else {
62 throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
63 }
64
65 return $this;
66 }
67
68 /**
69 * Adds an attribute group.
70 *
71 * @param Node\Attribute|Node\AttributeGroup $attribute
72 *
73 * @return $this The builder instance (for fluid interface)
74 */
75 public function addAttribute($attribute) {
76 $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
77
78 return $this;
79 }
80
81 /**
82 * Returns the built interface node.
83 *
84 * @return Stmt\Interface_ The built interface node
85 */
86 public function getNode() : PhpParser\Node {
87 return new Stmt\Interface_($this->name, [
88 'extends' => $this->extends,
89 'stmts' => array_merge($this->constants, $this->methods),
90 'attrGroups' => $this->attributeGroups,
91 ], $this->attributes);
92 }
93 }
94