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: * FileResource represents a resource stored on the filesystem.
16: *
17: * The resource can be a file or a directory.
18: *
19: * @author Fabien Potencier <fabien@symfony.com>
20: */
21: class FileResource implements ResourceInterface, \Serializable
22: {
23: private $resource;
24:
25: /**
26: * Constructor.
27: *
28: * @param string $resource The file path to the resource
29: */
30: public function __construct($resource)
31: {
32: $this->resource = realpath($resource);
33: }
34:
35: /**
36: * Returns a string representation of the Resource.
37: *
38: * @return string A string representation of the Resource
39: */
40: public function __toString()
41: {
42: return (string) $this->resource;
43: }
44:
45: /**
46: * Returns the resource tied to this Resource.
47: *
48: * @return mixed The resource
49: */
50: public function getResource()
51: {
52: return $this->resource;
53: }
54:
55: /**
56: * Returns true if the resource has not been updated since the given timestamp.
57: *
58: * @param integer $timestamp The last time the resource was loaded
59: *
60: * @return Boolean true if the resource has not been updated, false otherwise
61: */
62: public function isFresh($timestamp)
63: {
64: if (!file_exists($this->resource)) {
65: return false;
66: }
67:
68: return filemtime($this->resource) < $timestamp;
69: }
70:
71: public function serialize()
72: {
73: return serialize($this->resource);
74: }
75:
76: public function unserialize($serialized)
77: {
78: $this->resource = unserialize($serialized);
79: }
80: }
81: