abstract class BaseAsset

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>

Hierarchy

Expanded class hierarchy of BaseAsset

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Asset/BaseAsset.php, line 25

Namespace

Assetic\Asset
View source
abstract class BaseAsset implements AssetInterface {
  private $filters;
  private $sourceRoot;
  private $sourcePath;
  private $targetPath;
  private $content;
  private $loaded;
  private $vars;
  private $values;

  /**
   * Constructor.
   *
   * @param array  $filters    Filters for the asset
   * @param string $sourceRoot The root directory
   * @param string $sourcePath The asset path
   * @param array  $vars
   */
  public function __construct($filters = array(), $sourceRoot = null, $sourcePath = null, array $vars = array()) {
    $this->filters = new FilterCollection($filters);
    $this->sourceRoot = $sourceRoot;
    $this->sourcePath = $sourcePath;
    $this->vars = $vars;
    $this->values = array();
    $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) {
    if ($this->vars) {
      foreach ($this->vars as $var) {
        if (false === strpos($targetPath, $var)) {
          throw new \RuntimeException(sprintf('The asset target path "%s" must contain the variable "{%s}".', $targetPath, $var));
        }
      }
    }
    $this->targetPath = $targetPath;
  }
  public function getVars() {
    return $this->vars;
  }
  public function setValues(array $values) {
    foreach ($values as $var => $v) {
      if (!in_array($var, $this->vars, true)) {
        throw new \InvalidArgumentException(sprintf('The asset with source path "%s" has no variable named "%s".', $this->sourcePath, $var));
      }
    }
    $this->values = $values;
    $this->loaded = false;
  }
  public function getValues() {
    return $this->values;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AssetInterface::getLastModified public function Returns the time the current asset was last modified. 6
AssetInterface::load public function Loads the asset into memory and applies load filters. 6
BaseAsset::$content private property 1
BaseAsset::$filters private property
BaseAsset::$loaded private property
BaseAsset::$sourcePath private property
BaseAsset::$sourceRoot private property
BaseAsset::$targetPath private property
BaseAsset::$values private property
BaseAsset::$vars private property
BaseAsset::clearFilters public function Clears all filters from the current asset. Overrides AssetInterface::clearFilters
BaseAsset::doLoad protected function Encapsulates asset loading logic.
BaseAsset::dump public function Applies dump filters and returns the asset as a string. Overrides AssetInterface::dump
BaseAsset::ensureFilter public function Ensures the current asset includes the supplied filter. Overrides AssetInterface::ensureFilter
BaseAsset::getContent public function Returns the loaded content of the current asset. Overrides AssetInterface::getContent
BaseAsset::getFilters public function Returns an array of filters currently applied. Overrides AssetInterface::getFilters
BaseAsset::getSourcePath public function Returns the relative path for the source asset. Overrides AssetInterface::getSourcePath
BaseAsset::getSourceRoot public function Returns an absolute path or URL to the source asset's root directory. Overrides AssetInterface::getSourceRoot
BaseAsset::getTargetPath public function Returns the URL for the current asset. Overrides AssetInterface::getTargetPath
BaseAsset::getValues public function Returns the current values for this asset. Overrides AssetInterface::getValues
BaseAsset::getVars public function Returns an array of variable names for this asset. Overrides AssetInterface::getVars
BaseAsset::setContent public function Sets the content of the current asset. Overrides AssetInterface::setContent
BaseAsset::setTargetPath public function Sets the URL for the current asset. Overrides AssetInterface::setTargetPath
BaseAsset::setValues public function Sets the values for the asset's variables. Overrides AssetInterface::setValues
BaseAsset::__clone public function
BaseAsset::__construct public function Constructor. 3