NodeVisitorAbstract { public function beforeTraverse(array $nodes) { /** do something */ } public function enterNode(Node $node) { /** do something */ } public function leaveNode(Node $node) { /** do something */ } public function afterTraverse(array $nodes) { /** do something */ } }); $nodes = /** PHPのコードをパースしてノードを取り出す */ $traverser->traverse($nodes); 59
public function beforeTraverse(array $nodes) { /** do something */ } public function enterNode(Node $node) { /** do something */ } public function leaveNode(Node $node) { /** do something */ } public function afterTraverse(array $nodes) { /** do something */ } }); $nodes = /** PHPのコードをパースしてノードを取り出す */ $traverser->traverse($nodes); 60
public function beforeTraverse(array $nodes) { /** do something */ } public function enterNode(Node $node) { /** do something */ } public function leaveNode(Node $node) { /** do something */ } public function afterTraverse(array $nodes) { /** do something */ } }); $nodes = /** PHPのコードをパースしてノードを取り出す */ $traverser->traverse($nodes); 61
public function beforeTraverse(array $nodes) { /** do something */ } public function enterNode(Node $node) { /** do something */ } public function leaveNode(Node $node) { /** do something */ } public function afterTraverse(array $nodes) { /** do something */ } }); $nodes = /** PHPのコードをパースしてノードを取り出す */ $traverser->traverse($nodes); 62
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 65
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 66
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 67
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 68
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 69
traverseNode(Node $node) { foreach ($this->visitors as $visitor) { $visitor->enterNode($node); } } public function addVisitor(Visitor $visitor) {} public function removeVisitor(Visitor $visitor) {} } ※イメージ図です 70
get more information about the code, like types of variables, or current file and namespace." Scopeオブジェクトを使用すると、変数の型や現在のファイルや名前空間といった コードに関する情報を取得できます。 114