Overview

Namespaces

  • Pharborist
    • Constants
    • ControlStructures
    • Exceptions
    • Functions
    • Generators
    • Namespaces
    • Objects
    • Operators
    • Types
    • Variables

Classes

  • Pharborist\Variables\CompoundVariableNode
  • Pharborist\Variables\GlobalStatementNode
  • Pharborist\Variables\ReferenceVariableNode
  • Pharborist\Variables\StaticVariableNode
  • Pharborist\Variables\StaticVariableStatementNode
  • Pharborist\Variables\VariableNode
  • Pharborist\Variables\VariableVariableNode

Interfaces

  • Pharborist\Variables\VariableExpressionNode
  • Overview
  • Namespace
  • Class
 1: <?php
 2: namespace Pharborist\Objects;
 3: 
 4: use Pharborist\Parser;
 5: use Pharborist\Token;
 6: use Pharborist\TokenNode;
 7: 
 8: /**
 9:  * Class declaration.
10:  */
11: class ClassNode extends SingleInheritanceNode {
12:   /**
13:    * @var TokenNode
14:    */
15:   protected $abstract;
16: 
17:   /**
18:    * @var TokenNode
19:    */
20:   protected $final;
21: 
22:   /**
23:    * @param $class_name
24:    * @return ClassNode
25:    */
26:   public static function create($class_name) {
27:     $class_node = Parser::parseSnippet("class $class_name {}")->remove();
28:     return $class_node;
29:   }
30: 
31:   /**
32:    * @return TokenNode
33:    */
34:   public function getAbstract() {
35:     return $this->abstract;
36:   }
37: 
38:   /**
39:    * @param boolean $is_abstract
40:    * @return $this
41:    */
42:   public function setAbstract($is_abstract) {
43:     if ($is_abstract) {
44:       if (!isset($this->abstract)) {
45:         $this->abstract = Token::_abstract();
46:         $this->prepend([
47:           $this->abstract,
48:           Token::space(),
49:         ]);
50:         $this->setFinal(FALSE);
51:       }
52:     }
53:     else {
54:       if (isset($this->abstract)) {
55:         // Remove whitespace.
56:         $this->abstract->next()->remove();
57:         // Remove abstract.
58:         $this->abstract->remove();
59:       }
60:     }
61:     return $this;
62:   }
63: 
64:   /**
65:    * @return TokenNode
66:    */
67:   public function getFinal() {
68:     return $this->final;
69:   }
70: 
71:   /**
72:    * @param boolean $is_final
73:    * @return $this
74:    */
75:   public function setFinal($is_final) {
76:     if ($is_final) {
77:       if (!isset($this->final)) {
78:         $this->final = Token::_final();
79:         $this->prepend([
80:           $this->final,
81:           Token::space(),
82:         ]);
83:         $this->setAbstract(FALSE);
84:       }
85:     }
86:     else {
87:       if (isset($this->final)) {
88:         // Remove whitespace.
89:         $this->final->next()->remove();
90:         // Remove final.
91:         $this->final->remove();
92:       }
93:     }
94:     return $this;
95:   }
96: }
97: 
Pharborist API documentation generated by ApiGen