Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. vfsStreamStructureVisitor.php

class vfsStreamStructureVisitor

Visitor which traverses a content structure recursively to create an array structure from it.

@since 0.10.0

Hierarchy

  • class \org\bovigo\vfs\visitor\vfsStreamAbstractVisitor implements \org\bovigo\vfs\visitor\vfsStreamVisitor
    • class \org\bovigo\vfs\visitor\vfsStreamStructureVisitor extends \org\bovigo\vfs\visitor\vfsStreamAbstractVisitor

Expanded class hierarchy of vfsStreamStructureVisitor

See also

https://github.com/mikey179/vfsStream/issues/10

File

vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php, line 21

Namespace

org\bovigo\vfs\visitor
View source
class vfsStreamStructureVisitor extends vfsStreamAbstractVisitor {
    
    /**
     * collected structure
     *
     * @type  array
     */
    protected $structure = array();
    
    /**
     * poiting to currently iterated directory
     *
     * @type  array
     */
    protected $current;
    
    /**
     * constructor
     *
     * @api
     */
    public function __construct() {
        $this->reset();
    }
    
    /**
     * visit a file and process it
     *
     * @param   vfsStreamFile  $file
     * @return  vfsStreamStructureVisitor
     */
    public function visitFile(vfsStreamFile $file) {
        $this->current[$file->getName()] = $file->getContent();
        return $this;
    }
    
    /**
     * visit a block device and process it
     *
     * @param   vfsStreamBlock $block
     * @return  vfsStreamStructureVisitor
     */
    public function visitBlockDevice(vfsStreamBlock $block) {
        $this->current['[' . $block->getName() . ']'] = $block->getContent();
        return $this;
    }
    
    /**
     * visit a directory and process it
     *
     * @param   vfsStreamDirectory  $dir
     * @return  vfsStreamStructureVisitor
     */
    public function visitDirectory(vfsStreamDirectory $dir) {
        $this->current[$dir->getName()] = array();
        $tmp =& $this->current;
        $this->current =& $tmp[$dir->getName()];
        foreach ($dir as $child) {
            $this->visit($child);
        }
        $this->current =& $tmp;
        return $this;
    }
    
    /**
     * returns structure of visited contents
     *
     * @return  array
     * @api
     */
    public function getStructure() {
        return $this->structure;
    }
    
    /**
     * resets structure so visitor could be reused
     *
     * @return  vfsStreamStructureVisitor
     */
    public function reset() {
        $this->structure = array();
        $this->current =& $this->structure;
        return $this;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
vfsStreamAbstractVisitor::visit public function visit a content and process it Overrides vfsStreamVisitor::visit
vfsStreamStructureVisitor::$current protected property poiting to currently iterated directory
vfsStreamStructureVisitor::$structure protected property collected structure
vfsStreamStructureVisitor::getStructure public function returns structure of visited contents
vfsStreamStructureVisitor::reset public function resets structure so visitor could be reused
vfsStreamStructureVisitor::visitBlockDevice public function visit a block device and process it Overrides vfsStreamAbstractVisitor::visitBlockDevice
vfsStreamStructureVisitor::visitDirectory public function visit a directory and process it Overrides vfsStreamVisitor::visitDirectory
vfsStreamStructureVisitor::visitFile public function visit a file and process it Overrides vfsStreamVisitor::visitFile
vfsStreamStructureVisitor::__construct public function constructor
RSS feed
Powered by Drupal