Source of file FileResource.php
Size: 2,434 Bytes - Last Modified: 2013-05-16T07:32:23+02:00
/home/theseer/Downloads/Symfony/vendor/symfony/assetic-bundle/Symfony/Bundle/AsseticBundle/Factory/Resource/FileResource.php
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 | <?php /* * This file is part of the Symfony framework. * * (c) Fabien Potencier <fabien@symfony.com> * * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace Symfony\Bundle\AsseticBundle\Factory\Resource; use Assetic\Factory\Resource\ResourceInterface; use Symfony\Bundle\FrameworkBundle\Templating\TemplateReference; use Symfony\Component\Templating\Loader\LoaderInterface; /** * A file resource. * * @author Kris Wallsmith <kris@symfony.com> */ class FileResource implements ResourceInterface { protected $loader; protected $bundle; protected $baseDir; protected $path; protected $template; /** * Constructor. * * @param LoaderInterface $loader The templating loader * @param string $bundle The current bundle name * @param string $baseDir The directory * @param string $path The file path */ public function __construct(LoaderInterface $loader, $bundle, $baseDir, $path) { $this->loader = $loader; $this->bundle = $bundle; $this->baseDir = $baseDir; $this->path = $path; } public function isFresh($timestamp) { return $this->loader->isFresh($this->getTemplate(), $timestamp); } public function getContent() { $templateReference = $this->getTemplate(); $fileResource = $this->loader->load($templateReference); if (!$fileResource) { throw new \InvalidArgumentException(sprintf('Unable to find template "%s".', $templateReference)); } return $fileResource->getContent(); } public function __toString() { return (string) $this->getTemplate(); } protected function getTemplate() { if (null === $this->template) { $this->template = self::createTemplateReference($this->bundle, substr($this->path, strlen($this->baseDir))); } return $this->template; } static private function createTemplateReference($bundle, $file) { $parts = explode('/', strtr($file, '\\', '/')); $elements = explode('.', array_pop($parts)); $engine = array_pop($elements); $format = array_pop($elements); $name = implode('.', $elements); return new TemplateReference($bundle, implode('/', $parts), $name, $format, $engine); } } |