Overview

Namespaces

  • Contrib
    • Bundle
      • CoverallsBundle
        • Console
        • Entity
      • CoverallsV1Bundle
        • Api
        • Collector
        • Command
        • Config
        • Entity
          • Git
    • Component
      • File
      • Log
      • System
        • Git
  • Guzzle
    • Batch
      • Exception
    • Cache
    • Common
      • Exception
    • Http
      • Curl
      • Exception
      • Message
      • QueryAggregator
    • Inflection
    • Iterator
    • Log
    • Parser
      • Cookie
      • Message
      • UriTemplate
      • Url
    • Plugin
      • Async
      • Backoff
      • Cache
      • Cookie
        • CookieJar
        • Exception
      • CurlAuth
      • ErrorResponse
        • Exception
      • History
      • Log
      • Md5
      • Mock
      • Oauth
    • Service
      • Builder
      • Command
        • Factory
        • LocationVisitor
          • Request
          • Response
      • Description
      • Exception
      • Resource
    • Stream
  • PHP
  • Psr
    • Log
  • Symfony
    • Component
      • Config
        • Definition
          • Builder
          • Exception
        • Exception
        • Loader
        • Resource
        • Util
      • Console
        • Command
        • Formatter
        • Helper
        • Input
        • Output
        • Tester
      • EventDispatcher
        • Debug
      • Finder
        • Adapter
        • Comparator
        • Exception
        • Expression
        • Iterator
        • Shell
      • Stopwatch
      • Yaml
        • Exception

Classes

  • DirectoryResource
  • FileResource

Interfaces

  • ResourceInterface
  • Overview
  • Namespace
  • Class
  • Tree
  • Todo
  1: <?php
  2: 
  3: /*
  4:  * This file is part of the Symfony package.
  5:  *
  6:  * (c) Fabien Potencier <fabien@symfony.com>
  7:  *
  8:  * For the full copyright and license information, please view the LICENSE
  9:  * file that was distributed with this source code.
 10:  */
 11: 
 12: namespace Symfony\Component\Config\Resource;
 13: 
 14: /**
 15:  * DirectoryResource represents a resources stored in a subdirectory tree.
 16:  *
 17:  * @author Fabien Potencier <fabien@symfony.com>
 18:  */
 19: class DirectoryResource implements ResourceInterface, \Serializable
 20: {
 21:     private $resource;
 22:     private $pattern;
 23: 
 24:     /**
 25:      * Constructor.
 26:      *
 27:      * @param string $resource The file path to the resource
 28:      * @param string $pattern  A pattern to restrict monitored files
 29:      */
 30:     public function __construct($resource, $pattern = null)
 31:     {
 32:         $this->resource = $resource;
 33:         $this->pattern = $pattern;
 34:     }
 35: 
 36:     /**
 37:      * Returns a string representation of the Resource.
 38:      *
 39:      * @return string A string representation of the Resource
 40:      */
 41:     public function __toString()
 42:     {
 43:         return (string) $this->resource;
 44:     }
 45: 
 46:     /**
 47:      * Returns the resource tied to this Resource.
 48:      *
 49:      * @return mixed The resource
 50:      */
 51:     public function getResource()
 52:     {
 53:         return $this->resource;
 54:     }
 55: 
 56:     public function getPattern()
 57:     {
 58:         return $this->pattern;
 59:     }
 60: 
 61:     /**
 62:      * Returns true if the resource has not been updated since the given timestamp.
 63:      *
 64:      * @param integer $timestamp The last time the resource was loaded
 65:      *
 66:      * @return Boolean true if the resource has not been updated, false otherwise
 67:      */
 68:     public function isFresh($timestamp)
 69:     {
 70:         if (!is_dir($this->resource)) {
 71:             return false;
 72:         }
 73: 
 74:         $newestMTime = filemtime($this->resource);
 75:         foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->resource), \RecursiveIteratorIterator::SELF_FIRST) as $file) {
 76:             // if regex filtering is enabled only check matching files
 77:             if ($this->pattern && $file->isFile() && !preg_match($this->pattern, $file->getBasename())) {
 78:                 continue;
 79:             }
 80: 
 81:             // always monitor directories for changes, except the .. entries
 82:             // (otherwise deleted files wouldn't get detected)
 83:             if ($file->isDir() && '/..' === substr($file, -3)) {
 84:                 continue;
 85:             }
 86: 
 87:             $newestMTime = max($file->getMTime(), $newestMTime);
 88:         }
 89: 
 90:         return $newestMTime < $timestamp;
 91:     }
 92: 
 93:     public function serialize()
 94:     {
 95:         return serialize(array($this->resource, $this->pattern));
 96:     }
 97: 
 98:     public function unserialize($serialized)
 99:     {
100:         list($this->resource, $this->pattern) = unserialize($serialized);
101:     }
102: }
103: 
php-coveralls API documentation generated by ApiGen 2.8.0