TplBlock/vendor/symfony/dependency-injection/Config/AutowireServiceResource.php
2018-03-26 21:57:35 +02:00

74 lines
1.9 KiB
PHP

<?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\DependencyInjection\Config;
use Symfony\Component\Config\Resource\SelfCheckingResourceInterface;
use Symfony\Component\DependencyInjection\Compiler\AutowirePass;
class AutowireServiceResource implements SelfCheckingResourceInterface, \Serializable
{
private $class;
private $filePath;
private $autowiringMetadata = array();
public function __construct($class, $path, array $autowiringMetadata)
{
$this->class = $class;
$this->filePath = $path;
$this->autowiringMetadata = $autowiringMetadata;
}
public function isFresh($timestamp)
{
if (!file_exists($this->filePath)) {
return false;
}
// has the file *not* been modified? Definitely fresh
if (@filemtime($this->filePath) <= $timestamp) {
return true;
}
try {
$reflectionClass = new \ReflectionClass($this->class);
} catch (\ReflectionException $e) {
// the class does not exist anymore!
return false;
}
return (array) $this === (array) AutowirePass::createResourceForClass($reflectionClass);
}
public function __toString()
{
return 'service.autowire.'.$this->class;
}
public function serialize()
{
return serialize(array($this->class, $this->filePath, $this->autowiringMetadata));
}
public function unserialize($serialized)
{
list($this->class, $this->filePath, $this->autowiringMetadata) = unserialize($serialized);
}
/**
* @deprecated Implemented for compatibility with Symfony 2.8
*/
public function getResource()
{
return $this->filePath;
}
}