php-parser/lib/PHPParser/NodeAbstract.php
nikic b49c55c9e5 Cover NodeTraverser and bugs it found
a) ->traverseNode() now operates on a clone of the node, otherwise the original node will be modified too
b) before nodes were passed to the following visitor unchanged, even though they were already changed in the tree
2011-12-02 17:52:03 +01:00

93 lines
2.1 KiB
PHP

<?php
abstract class PHPParser_NodeAbstract implements PHPParser_Node, IteratorAggregate
{
protected $subNodes;
protected $line;
protected $docComment;
/**
* Creates a Node.
*
* @param array $subNodes Array of sub nodes
* @param int $line Line
* @param null|string $docComment Nearest doc comment
*/
public function __construct(array $subNodes, $line = -1, $docComment = null) {
$this->subNodes = $subNodes;
$this->line = $line;
$this->docComment = $docComment;
}
/**
* Gets the type of the node.
*
* @return string Type of the node
*/
public function getType() {
return substr(get_class($this), 15);
}
/**
* Gets the names of the sub nodes.
*
* @return array Names of sub nodes
*/
public function getSubNodeNames() {
return array_keys($this->subNodes);
}
/**
* Gets line the node started in.
*
* @return int Line
*/
public function getLine() {
return $this->line;
}
/**
* Sets line the node started in.
*
* @param int $line Line
*/
public function setLine($line) {
$this->line = (int) $line;
}
/**
* Gets the nearest doc comment.
*
* @return null|string Nearest doc comment or null
*/
public function getDocComment() {
return $this->docComment;
}
/**
* Sets the nearest doc comment.
*
* @param null|string $docComment Nearest doc comment or null
*/
public function setDocComment($docComment) {
$this->docComment = $docComment;
}
/* Magic interfaces */
public function &__get($name) {
return $this->subNodes[$name];
}
public function __set($name, $value) {
$this->subNodes[$name] = $value;
}
public function __isset($name) {
return isset($this->subNodes[$name]);
}
public function __unset($name) {
unset($this->subNodes[$name]);
}
public function getIterator() {
return new ArrayIterator($this->subNodes);
}
}