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

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

121 lines 3.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 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|WPDeveloper\BetterDocs\Dependencies\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 }