123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <?php
-
- /*
- * This file is part of the Assetic package, an OpenSky project.
- *
- * (c) 2010-2011 OpenSky Project Inc
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
- namespace Assetic\Asset;
-
- use Assetic\Filter\FilterCollection;
- use Assetic\Filter\FilterInterface;
-
- /**
- * A base abstract asset.
- *
- * The methods load() and getLastModified() are left undefined, although a
- * reusable doLoad() method is available to child classes.
- *
- * @author Kris Wallsmith <kris.wallsmith@gmail.com>
- */
- abstract class BaseAsset implements AssetInterface
- {
- private $filters;
- private $sourceRoot;
- private $sourcePath;
- private $targetPath;
- private $content;
- private $loaded;
-
- /**
- * Constructor.
- *
- * @param array $filters Filters for the asset
- */
- public function __construct($filters = array(), $sourceRoot = null, $sourcePath = null)
- {
- $this->filters = new FilterCollection($filters);
- $this->sourceRoot = $sourceRoot;
- $this->sourcePath = $sourcePath;
- $this->loaded = false;
- }
-
- public function __clone()
- {
- $this->filters = clone $this->filters;
- }
-
- public function ensureFilter(FilterInterface $filter)
- {
- $this->filters->ensure($filter);
- }
-
- public function getFilters()
- {
- return $this->filters->all();
- }
-
- public function clearFilters()
- {
- $this->filters->clear();
- }
-
- /**
- * Encapsulates asset loading logic.
- *
- * @param string $content The asset content
- * @param FilterInterface $additionalFilter An additional filter
- */
- protected function doLoad($content, FilterInterface $additionalFilter = null)
- {
- $filter = clone $this->filters;
- if ($additionalFilter) {
- $filter->ensure($additionalFilter);
- }
-
- $asset = clone $this;
- $asset->setContent($content);
-
- $filter->filterLoad($asset);
- $this->content = $asset->getContent();
-
- $this->loaded = true;
- }
-
- public function dump(FilterInterface $additionalFilter = null)
- {
- if (!$this->loaded) {
- $this->load();
- }
-
- $filter = clone $this->filters;
- if ($additionalFilter) {
- $filter->ensure($additionalFilter);
- }
-
- $asset = clone $this;
- $filter->filterDump($asset);
-
- return $asset->getContent();
- }
-
- public function getContent()
- {
- return $this->content;
- }
-
- public function setContent($content)
- {
- $this->content = $content;
- }
-
- public function getSourceRoot()
- {
- return $this->sourceRoot;
- }
-
- public function getSourcePath()
- {
- return $this->sourcePath;
- }
-
- public function getTargetPath()
- {
- return $this->targetPath;
- }
-
- public function setTargetPath($targetPath)
- {
- $this->targetPath = $targetPath;
- }
- }
|