<?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\Bundle\FrameworkBundle\Templating\Loader; 
 
@trigger_error('The '.FilesystemLoader::class.' class is deprecated since version 4.3 and will be removed in 5.0; use Twig instead.', \E_USER_DEPRECATED); 
 
use Symfony\Component\Config\FileLocatorInterface; 
use Symfony\Component\Templating\Loader\LoaderInterface; 
use Symfony\Component\Templating\Storage\FileStorage; 
use Symfony\Component\Templating\TemplateReferenceInterface; 
 
/** 
 * FilesystemLoader is a loader that read templates from the filesystem. 
 * 
 * @author Fabien Potencier <fabien@symfony.com> 
 * 
 * @deprecated since version 4.3, to be removed in 5.0; use Twig instead. 
 */ 
class FilesystemLoader implements LoaderInterface 
{ 
    protected $locator; 
 
    public function __construct(FileLocatorInterface $locator) 
    { 
        $this->locator = $locator; 
    } 
 
    /** 
     * {@inheritdoc} 
     */ 
    public function load(TemplateReferenceInterface $template) 
    { 
        try { 
            $file = $this->locator->locate($template); 
        } catch (\InvalidArgumentException $e) { 
            return false; 
        } 
 
        return new FileStorage($file); 
    } 
 
    /** 
     * {@inheritdoc} 
     */ 
    public function isFresh(TemplateReferenceInterface $template, $time) 
    { 
        if (false === $storage = $this->load($template)) { 
            return false; 
        } 
 
        if (!is_readable((string) $storage)) { 
            return false; 
        } 
 
        return filemtime((string) $storage) < $time; 
    } 
}