1: <?php
2: namespace Pharborist\Objects;
3:
4: use Pharborist\Token;
5: use Pharborist\TokenNode;
6:
7: trait VisibilityTrait {
8: 9: 10:
11: protected $visibility;
12:
13: 14: 15:
16: public function getVisibility() {
17: return $this->visibility;
18: }
19:
20: 21: 22: 23:
24: public function setVisibility($visibility) {
25: if ($visibility === NULL) {
26: $this->removeVisibility();
27: }
28: else {
29: if ($visibility === 'private' || $visibility === T_PRIVATE) {
30: $visibility = Token::_private();
31: }
32: elseif ($visibility === 'protected' || $visibility === T_PROTECTED) {
33: $visibility = Token::_protected();
34: }
35: elseif ($visibility === 'public' || $visibility === T_PUBLIC) {
36: $visibility = Token::_public();
37: }
38:
39: if (isset($this->visibility)) {
40: $this->visibility->replaceWith($visibility);
41: }
42: else {
43:
44: $this->prepend([
45: $visibility,
46: Token::space(),
47: ]);
48: $this->visibility = $visibility;
49: }
50: }
51: return $this;
52: }
53:
54: 55: 56:
57: protected function removeVisibility() {
58:
59: $this->visibility->next()->remove();
60:
61: $this->visibility->remove();
62: }
63: }
64: