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>
Expanded class hierarchy of BaseAsset
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;
}
}
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AssetInterface:: |
public | function | Returns the time the current asset was last modified. | 6 |
AssetInterface:: |
public | function | Loads the asset into memory and applies load filters. | 6 |
BaseAsset:: |
private | property | 1 | |
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
private | property | ||
BaseAsset:: |
public | function |
Clears all filters from the current asset. Overrides AssetInterface:: |
|
BaseAsset:: |
protected | function | Encapsulates asset loading logic. | |
BaseAsset:: |
public | function |
Applies dump filters and returns the asset as a string. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Ensures the current asset includes the supplied filter. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns the loaded content of the current asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns an array of filters currently applied. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns the relative path for the source asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns an absolute path or URL to the source asset's root directory. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns the URL for the current asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns the current values for this asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Returns an array of variable names for this asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Sets the content of the current asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Sets the URL for the current asset. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function |
Sets the values for the asset's variables. Overrides AssetInterface:: |
|
BaseAsset:: |
public | function | ||
BaseAsset:: |
public | function | Constructor. | 3 |