vendor/symfony/config/Resource/FileResource.php line 60

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Config\Resource;
  11. /**
  12.  * FileResource represents a resource stored on the filesystem.
  13.  *
  14.  * The resource can be a file or a directory.
  15.  *
  16.  * @author Fabien Potencier <fabien@symfony.com>
  17.  *
  18.  * @final
  19.  */
  20. class FileResource implements SelfCheckingResourceInterface
  21. {
  22.     /**
  23.      * @var string|false
  24.      */
  25.     private $resource;
  26.     /**
  27.      * @param string $resource The file path to the resource
  28.      *
  29.      * @throws \InvalidArgumentException
  30.      */
  31.     public function __construct(string $resource)
  32.     {
  33.         $this->resource realpath($resource) ?: (file_exists($resource) ? $resource false);
  34.         if (false === $this->resource) {
  35.             throw new \InvalidArgumentException(sprintf('The file "%s" does not exist.'$resource));
  36.         }
  37.     }
  38.     public function __toString(): string
  39.     {
  40.         return $this->resource;
  41.     }
  42.     /**
  43.      * Returns the canonicalized, absolute path to the resource.
  44.      */
  45.     public function getResource(): string
  46.     {
  47.         return $this->resource;
  48.     }
  49.     /**
  50.      * {@inheritdoc}
  51.      */
  52.     public function isFresh(int $timestamp): bool
  53.     {
  54.         return false !== ($filemtime = @filemtime($this->resource)) && $filemtime <= $timestamp;
  55.     }
  56. }