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

Breadcrumb

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

class vfsStreamDirectory

Directory container.

@api

Hierarchy

  • class \org\bovigo\vfs\vfsStreamAbstractContent implements \org\bovigo\vfs\vfsStreamContent
    • class \org\bovigo\vfs\vfsStreamDirectory extends \org\bovigo\vfs\vfsStreamAbstractContent implements \org\bovigo\vfs\vfsStreamContainer

Expanded class hierarchy of vfsStreamDirectory

3 files declare their use of vfsStreamDirectory
vfsStreamPrintVisitor.php in vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamPrintVisitor.php
vfsStreamStructureVisitor.php in vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamStructureVisitor.php
vfsStreamVisitor.php in vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/visitor/vfsStreamVisitor.php

File

vendor/mikey179/vfsstream/src/main/php/org/bovigo/vfs/vfsStreamDirectory.php, line 16

Namespace

org\bovigo\vfs
View source
class vfsStreamDirectory extends vfsStreamAbstractContent implements vfsStreamContainer {
    
    /**
     * list of directory children
     *
     * @type  vfsStreamContent[]
     */
    protected $children = array();
    
    /**
     * constructor
     *
     * @param   string  $name
     * @param   int     $permissions  optional
     * @throws  vfsStreamException
     */
    public function __construct($name, $permissions = null) {
        if (strstr($name, '/') !== false) {
            throw new vfsStreamException('Directory name can not contain /.');
        }
        $this->type = vfsStreamContent::TYPE_DIR;
        parent::__construct($name, $permissions);
    }
    
    /**
     * returns default permissions for concrete implementation
     *
     * @return  int
     * @since   0.8.0
     */
    protected function getDefaultPermissions() {
        return 0777;
    }
    
    /**
     * returns size of directory
     *
     * The size of a directory is always 0 bytes. To calculate the summarized
     * size of all children in the directory use sizeSummarized().
     *
     * @return  int
     */
    public function size() {
        return 0;
    }
    
    /**
     * returns summarized size of directory and its children
     *
     * @return  int
     */
    public function sizeSummarized() {
        $size = 0;
        foreach ($this->children as $child) {
            if ($child->getType() === vfsStreamContent::TYPE_DIR) {
                $size += $child->sizeSummarized();
            }
            else {
                $size += $child->size();
            }
        }
        return $size;
    }
    
    /**
     * renames the content
     *
     * @param   string  $newName
     * @throws  vfsStreamException
     */
    public function rename($newName) {
        if (strstr($newName, '/') !== false) {
            throw new vfsStreamException('Directory name can not contain /.');
        }
        parent::rename($newName);
    }
    
    /**
     * sets parent path
     *
     * @param  string  $parentPath
     * @internal  only to be set by parent
     * @since   1.2.0
     */
    public function setParentPath($parentPath) {
        parent::setParentPath($parentPath);
        foreach ($this->children as $child) {
            $child->setParentPath($this->path());
        }
    }
    
    /**
     * adds child to the directory
     *
     * @param  vfsStreamContent  $child
     */
    public function addChild(vfsStreamContent $child) {
        $child->setParentPath($this->path());
        $this->children[$child->getName()] = $child;
        $this->updateModifications();
    }
    
    /**
     * removes child from the directory
     *
     * @param   string  $name
     * @return  bool
     */
    public function removeChild($name) {
        foreach ($this->children as $key => $child) {
            if ($child->appliesTo($name)) {
                $child->setParentPath(null);
                unset($this->children[$key]);
                $this->updateModifications();
                return true;
            }
        }
        return false;
    }
    
    /**
     * updates internal timestamps
     */
    protected function updateModifications() {
        $time = time();
        $this->lastAttributeModified = $time;
        $this->lastModified = $time;
    }
    
    /**
     * checks whether the container contains a child with the given name
     *
     * @param   string  $name
     * @return  bool
     */
    public function hasChild($name) {
        return $this->getChild($name) !== null;
    }
    
    /**
     * returns the child with the given name
     *
     * @param   string  $name
     * @return  vfsStreamContent
     */
    public function getChild($name) {
        $childName = $this->getRealChildName($name);
        foreach ($this->children as $child) {
            if ($child->getName() === $childName) {
                return $child;
            }
            if ($child->appliesTo($childName) === true && $child->hasChild($childName) === true) {
                return $child->getChild($childName);
            }
        }
        return null;
    }
    
    /**
     * helper method to detect the real child name
     *
     * @param   string  $name
     * @return  string
     */
    protected function getRealChildName($name) {
        if ($this->appliesTo($name) === true) {
            return self::getChildName($name, $this->name);
        }
        return $name;
    }
    
    /**
     * helper method to calculate the child name
     *
     * @param   string  $name
     * @param   string  $ownName
     * @return  string
     */
    protected static function getChildName($name, $ownName) {
        if ($name === $ownName) {
            return $name;
        }
        return substr($name, strlen($ownName) + 1);
    }
    
    /**
     * checks whether directory contains any children
     *
     * @return  bool
     * @since   0.10.0
     */
    public function hasChildren() {
        return count($this->children) > 0;
    }
    
    /**
     * returns a list of children for this directory
     *
     * @return  vfsStreamContent[]
     */
    public function getChildren() {
        return array_values($this->children);
    }
    
    /**
     * returns iterator for the children
     *
     * @return  vfsStreamContainerIterator
     */
    public function getIterator() {
        return new vfsStreamContainerIterator($this->children);
    }
    
    /**
     * checks whether dir is a dot dir
     *
     * @return  bool
     */
    public function isDot() {
        if ('.' === $this->name || '..' === $this->name) {
            return true;
        }
        return false;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
vfsStreamAbstractContent::$group protected property owner group of the file
vfsStreamAbstractContent::$lastAccessed protected property timestamp of last access
vfsStreamAbstractContent::$lastAttributeModified protected property timestamp of last attribute modification
vfsStreamAbstractContent::$lastModified protected property timestamp of last modification
vfsStreamAbstractContent::$name protected property name of the container
vfsStreamAbstractContent::$parentPath private property path to to this content
vfsStreamAbstractContent::$permissions protected property permissions for content
vfsStreamAbstractContent::$type protected property type of the container
vfsStreamAbstractContent::$user protected property owner of the file
vfsStreamAbstractContent::appliesTo public function checks whether the container can be applied to given name Overrides vfsStreamContent::appliesTo 1
vfsStreamAbstractContent::at public function adds content to given container Overrides vfsStreamContent::at
vfsStreamAbstractContent::chgrp public function change owner group of file to given group Overrides vfsStreamContent::chgrp
vfsStreamAbstractContent::chmod public function change file mode to given permissions Overrides vfsStreamContent::chmod
vfsStreamAbstractContent::chown public function change owner of file to given user Overrides vfsStreamContent::chown
vfsStreamAbstractContent::fileatime public function returns the last access time of the stream content
vfsStreamAbstractContent::filectime public function returns the last attribute modification time of the stream content
vfsStreamAbstractContent::filemtime public function returns the last modification time of the stream content Overrides vfsStreamContent::filemtime
vfsStreamAbstractContent::getGroup public function returns owner group of file Overrides vfsStreamContent::getGroup
vfsStreamAbstractContent::getName public function returns the file name of the content Overrides vfsStreamContent::getName
vfsStreamAbstractContent::getPermissions public function returns permissions Overrides vfsStreamContent::getPermissions
vfsStreamAbstractContent::getType public function returns the type of the container Overrides vfsStreamContent::getType
vfsStreamAbstractContent::getUser public function returns owner of file Overrides vfsStreamContent::getUser
vfsStreamAbstractContent::isExecutable public function checks whether content is executable Overrides vfsStreamContent::isExecutable
vfsStreamAbstractContent::isOwnedByGroup public function checks whether file is owned by group Overrides vfsStreamContent::isOwnedByGroup
vfsStreamAbstractContent::isOwnedByUser public function checks whether file is owned by given user Overrides vfsStreamContent::isOwnedByUser
vfsStreamAbstractContent::isReadable public function checks whether content is readable Overrides vfsStreamContent::isReadable
vfsStreamAbstractContent::isWritable public function checks whether content is writable Overrides vfsStreamContent::isWritable
vfsStreamAbstractContent::lastAccessed public function sets last access time of the stream content
vfsStreamAbstractContent::lastAttributeModified public function sets the last attribute modification time of the stream content
vfsStreamAbstractContent::lastModified public function sets the last modification time of the stream content Overrides vfsStreamContent::lastModified
vfsStreamAbstractContent::path public function returns path to this content Overrides vfsStreamContent::path
vfsStreamAbstractContent::url public function returns complete vfsStream url for this content Overrides vfsStreamContent::url
vfsStreamContent::TYPE_BLOCK constant stream content type: block
vfsStreamContent::TYPE_DIR constant stream content type: directory
vfsStreamContent::TYPE_FILE constant stream content type: file
vfsStreamDirectory::$children protected property list of directory children
vfsStreamDirectory::addChild public function adds child to the directory Overrides vfsStreamContainer::addChild
vfsStreamDirectory::getChild public function returns the child with the given name Overrides vfsStreamContainer::getChild
vfsStreamDirectory::getChildName protected static function helper method to calculate the child name
vfsStreamDirectory::getChildren public function returns a list of children for this directory Overrides vfsStreamContainer::getChildren
vfsStreamDirectory::getDefaultPermissions protected function returns default permissions for concrete implementation Overrides vfsStreamAbstractContent::getDefaultPermissions
vfsStreamDirectory::getIterator public function returns iterator for the children 1
vfsStreamDirectory::getRealChildName protected function helper method to detect the real child name
vfsStreamDirectory::hasChild public function checks whether the container contains a child with the given name Overrides vfsStreamContainer::hasChild
vfsStreamDirectory::hasChildren public function checks whether directory contains any children Overrides vfsStreamContainer::hasChildren
vfsStreamDirectory::isDot public function checks whether dir is a dot dir 1
vfsStreamDirectory::removeChild public function removes child from the directory Overrides vfsStreamContainer::removeChild
vfsStreamDirectory::rename public function renames the content Overrides vfsStreamAbstractContent::rename
vfsStreamDirectory::setParentPath public function sets parent path Overrides vfsStreamAbstractContent::setParentPath
vfsStreamDirectory::size public function returns size of directory Overrides vfsStreamContent::size
vfsStreamDirectory::sizeSummarized public function returns summarized size of directory and its children
vfsStreamDirectory::updateModifications protected function updates internal timestamps
vfsStreamDirectory::__construct public function constructor Overrides vfsStreamAbstractContent::__construct

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal