123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Finder\Iterator;
- @trigger_error('The '.__NAMESPACE__.'\FilePathsIterator class is deprecated since version 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
- use Symfony\Component\Finder\SplFileInfo;
- /**
- * Iterate over shell command result.
- *
- * @author Jean-François Simon <contact@jfsimon.fr>
- *
- * @deprecated since 2.8, to be removed in 3.0.
- */
- class FilePathsIterator extends \ArrayIterator
- {
- /**
- * @var string
- */
- private $baseDir;
- /**
- * @var int
- */
- private $baseDirLength;
- /**
- * @var string
- */
- private $subPath;
- /**
- * @var string
- */
- private $subPathname;
- /**
- * @var SplFileInfo
- */
- private $current;
- /**
- * @param array $paths List of paths returned by shell command
- * @param string $baseDir Base dir for relative path building
- */
- public function __construct(array $paths, $baseDir)
- {
- $this->baseDir = $baseDir;
- $this->baseDirLength = strlen($baseDir);
- parent::__construct($paths);
- }
- /**
- * @param string $name
- * @param array $arguments
- *
- * @return mixed
- */
- public function __call($name, array $arguments)
- {
- return call_user_func_array(array($this->current(), $name), $arguments);
- }
- /**
- * Return an instance of SplFileInfo with support for relative paths.
- *
- * @return SplFileInfo File information
- */
- public function current()
- {
- return $this->current;
- }
- /**
- * @return string
- */
- public function key()
- {
- return $this->current->getPathname();
- }
- public function next()
- {
- parent::next();
- $this->buildProperties();
- }
- public function rewind()
- {
- parent::rewind();
- $this->buildProperties();
- }
- /**
- * @return string
- */
- public function getSubPath()
- {
- return $this->subPath;
- }
- /**
- * @return string
- */
- public function getSubPathname()
- {
- return $this->subPathname;
- }
- private function buildProperties()
- {
- $absolutePath = parent::current();
- if ($this->baseDir === substr($absolutePath, 0, $this->baseDirLength)) {
- $this->subPathname = ltrim(substr($absolutePath, $this->baseDirLength), '/\\');
- $dir = dirname($this->subPathname);
- $this->subPath = '.' === $dir ? '' : $dir;
- } else {
- $this->subPath = $this->subPathname = '';
- }
- $this->current = new SplFileInfo(parent::current(), $this->subPath, $this->subPathname);
- }
- }
|