comparison vendor/nikic/php-parser/lib/PhpParser/Builder/Property.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\Stmt;
7
8 class Property extends PhpParser\BuilderAbstract
9 {
10 protected $name;
11
12 protected $flags = 0;
13 protected $default = null;
14 protected $attributes = array();
15
16 /**
17 * Creates a property builder.
18 *
19 * @param string $name Name of the property
20 */
21 public function __construct($name) {
22 $this->name = $name;
23 }
24
25 /**
26 * Makes the property public.
27 *
28 * @return $this The builder instance (for fluid interface)
29 */
30 public function makePublic() {
31 $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC);
32
33 return $this;
34 }
35
36 /**
37 * Makes the property protected.
38 *
39 * @return $this The builder instance (for fluid interface)
40 */
41 public function makeProtected() {
42 $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED);
43
44 return $this;
45 }
46
47 /**
48 * Makes the property private.
49 *
50 * @return $this The builder instance (for fluid interface)
51 */
52 public function makePrivate() {
53 $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE);
54
55 return $this;
56 }
57
58 /**
59 * Makes the property static.
60 *
61 * @return $this The builder instance (for fluid interface)
62 */
63 public function makeStatic() {
64 $this->setModifier(Stmt\Class_::MODIFIER_STATIC);
65
66 return $this;
67 }
68
69 /**
70 * Sets default value for the property.
71 *
72 * @param mixed $value Default value to use
73 *
74 * @return $this The builder instance (for fluid interface)
75 */
76 public function setDefault($value) {
77 $this->default = $this->normalizeValue($value);
78
79 return $this;
80 }
81
82 /**
83 * Sets doc comment for the property.
84 *
85 * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
86 *
87 * @return $this The builder instance (for fluid interface)
88 */
89 public function setDocComment($docComment) {
90 $this->attributes = array(
91 'comments' => array($this->normalizeDocComment($docComment))
92 );
93
94 return $this;
95 }
96
97 /**
98 * Returns the built class node.
99 *
100 * @return Stmt\Property The built property node
101 */
102 public function getNode() {
103 return new Stmt\Property(
104 $this->flags !== 0 ? $this->flags : Stmt\Class_::MODIFIER_PUBLIC,
105 array(
106 new Stmt\PropertyProperty($this->name, $this->default)
107 ),
108 $this->attributes
109 );
110 }
111 }