123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?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\Tests\Iterator;
- class MockSplFileInfo extends \SplFileInfo
- {
- const TYPE_DIRECTORY = 1;
- const TYPE_FILE = 2;
- const TYPE_UNKNOWN = 3;
- private $contents = null;
- private $mode = null;
- private $type = null;
- private $relativePath = null;
- private $relativePathname = null;
- public function __construct($param)
- {
- if (\is_string($param)) {
- parent::__construct($param);
- } elseif (\is_array($param)) {
- $defaults = [
- 'name' => 'file.txt',
- 'contents' => null,
- 'mode' => null,
- 'type' => null,
- 'relativePath' => null,
- 'relativePathname' => null,
- ];
- $defaults = array_merge($defaults, $param);
- parent::__construct($defaults['name']);
- $this->setContents($defaults['contents']);
- $this->setMode($defaults['mode']);
- $this->setType($defaults['type']);
- $this->setRelativePath($defaults['relativePath']);
- $this->setRelativePathname($defaults['relativePathname']);
- } else {
- throw new \RuntimeException(sprintf('Incorrect parameter "%s"', $param));
- }
- }
- public function isFile()
- {
- if (null === $this->type) {
- return false !== strpos($this->getFilename(), 'file');
- }
- return self::TYPE_FILE === $this->type;
- }
- public function isDir()
- {
- if (null === $this->type) {
- return false !== strpos($this->getFilename(), 'directory');
- }
- return self::TYPE_DIRECTORY === $this->type;
- }
- public function isReadable()
- {
- if (null === $this->mode) {
- return preg_match('/r\+/', $this->getFilename());
- }
- return preg_match('/r\+/', $this->mode);
- }
- public function getContents()
- {
- return $this->contents;
- }
- public function setContents($contents)
- {
- $this->contents = $contents;
- }
- public function setMode($mode)
- {
- $this->mode = $mode;
- }
- public function setType($type)
- {
- if (\is_string($type)) {
- switch ($type) {
- case 'directory':
- case 'd':
- $this->type = self::TYPE_DIRECTORY;
- break;
- case 'file':
- case 'f':
- $this->type = self::TYPE_FILE;
- break;
- default:
- $this->type = self::TYPE_UNKNOWN;
- }
- } else {
- $this->type = $type;
- }
- }
- public function setRelativePath($relativePath)
- {
- $this->relativePath = $relativePath;
- }
- public function setRelativePathname($relativePathname)
- {
- $this->relativePathname = $relativePathname;
- }
- public function getRelativePath()
- {
- return $this->relativePath;
- }
- public function getRelativePathname()
- {
- return $this->relativePathname;
- }
- }
|