59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace PhpParser;
 | |
| 
 | |
| class NodeDumper
 | |
| {
 | |
|     /**
 | |
|      * Dumps a node or array.
 | |
|      *
 | |
|      * @param array|Node $node Node or array to dump
 | |
|      *
 | |
|      * @return string Dumped value
 | |
|      */
 | |
|     public function dump($node) {
 | |
|         if ($node instanceof Node) {
 | |
|             $r = $node->getType() . '(';
 | |
| 
 | |
|             foreach ($node->getSubNodeNames() as $key) {
 | |
|                 $r .= "\n    " . $key . ': ';
 | |
| 
 | |
|                 $value = $node->$key;
 | |
|                 if (null === $value) {
 | |
|                     $r .= 'null';
 | |
|                 } elseif (false === $value) {
 | |
|                     $r .= 'false';
 | |
|                 } elseif (true === $value) {
 | |
|                     $r .= 'true';
 | |
|                 } elseif (is_scalar($value)) {
 | |
|                     $r .= $value;
 | |
|                 } else {
 | |
|                     $r .= str_replace("\n", "\n    ", $this->dump($value));
 | |
|                 }
 | |
|             }
 | |
|         } elseif (is_array($node)) {
 | |
|             $r = 'array(';
 | |
| 
 | |
|             foreach ($node as $key => $value) {
 | |
|                 $r .= "\n    " . $key . ': ';
 | |
| 
 | |
|                 if (null === $value) {
 | |
|                     $r .= 'null';
 | |
|                 } elseif (false === $value) {
 | |
|                     $r .= 'false';
 | |
|                 } elseif (true === $value) {
 | |
|                     $r .= 'true';
 | |
|                 } elseif (is_scalar($value)) {
 | |
|                     $r .= $value;
 | |
|                 } else {
 | |
|                     $r .= str_replace("\n", "\n    ", $this->dump($value));
 | |
|                 }
 | |
|             }
 | |
|         } else {
 | |
|             throw new \InvalidArgumentException('Can only dump nodes and arrays.');
 | |
|         }
 | |
| 
 | |
|         return $r . "\n)";
 | |
|     }
 | |
| }
 | 
