PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.9
4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 All 200 releases
betterdocs / includes / Dependencies / PhpParser / Builder / Interface_.php

Interface_.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.8.9, at includes/Dependencies/PhpParser/Builder/Interface_.php

80 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Dependencies\PhpParser\Builder;
4
5 use WPDeveloper\BetterDocs\Dependencies\PhpParser;
6 use WPDeveloper\BetterDocs\Dependencies\PhpParser\Node\Name;
7 use WPDeveloper\BetterDocs\Dependencies\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|WPDeveloper\BetterDocs\Dependencies\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 }