1: <?php
2: namespace Pharborist\Objects;
3:
4: use Pharborist\CommaListNode;
5: use Pharborist\Functions\CallNode;
6: use Pharborist\Namespaces\NameNode;
7: use Pharborist\Node;
8: use Pharborist\Token;
9: use Pharborist\Variables\VariableExpressionNode;
10:
11: 12: 13:
14: class ClassMethodCallNode extends CallNode implements VariableExpressionNode {
15: 16: 17:
18: protected $className;
19:
20: 21: 22:
23: protected $methodName;
24:
25: 26: 27:
28: public function getClassName() {
29: return $this->className;
30: }
31:
32: 33: 34: 35:
36: public function setClassName($class_name) {
37: if (is_string($class_name)) {
38: $class_name = Token::identifier($class_name);
39: }
40: $this->className->replaceWith($class_name);
41: $this->className = $class_name;
42: return $this;
43: }
44:
45: 46: 47:
48: public function getMethodName() {
49: return $this->methodName;
50: }
51:
52: 53: 54: 55:
56: public function setMethodName($method_name) {
57: if (is_string($method_name)) {
58: $method_name = Token::identifier($method_name);
59: }
60: $this->methodName->replaceWith($method_name);
61: $this->methodName = $method_name;
62: return $this;
63: }
64:
65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
75: public static function create($class_name, $method_name) {
76: if (is_string($class_name)) {
77: $class_name = NameNode::create($class_name);
78: }
79:
80: $node = new static();
81: $node->addChild($class_name, 'className');
82: $node->addChild(Token::doubleColon());
83: $node->addChild(Token::identifier($method_name), 'methodName');
84: $node->addChild(Token::openParen(), 'openParen');
85: $node->addChild(new CommaListNode(), 'arguments');
86: $node->addChild(Token::closeParen(), 'closeParen');
87: return $node;
88: }
89: }
90: