Current File : //opt/alt/php55/usr/share/pear/Symfony/Component/Templating/Helper/CoreAssetsHelper.php |
<?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\Component\Templating\Helper;
use Symfony\Component\Templating\Asset\PackageInterface;
/**
* CoreAssetsHelper helps manage asset URLs.
*
* Usage:
*
* <code>
* <img src="<?php echo $view['assets']->getUrl('foo.png') ?>" />
* </code>
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Kris Wallsmith <kris@symfony.com>
*/
class CoreAssetsHelper extends Helper implements PackageInterface
{
protected $defaultPackage;
protected $namedPackages = array();
/**
* Constructor.
*
* @param PackageInterface $defaultPackage The default package
* @param array $namedPackages Additional packages indexed by name
*/
public function __construct(PackageInterface $defaultPackage, array $namedPackages = array())
{
$this->defaultPackage = $defaultPackage;
foreach ($namedPackages as $name => $package) {
$this->addPackage($name, $package);
}
}
/**
* Sets the default package.
*
* @param PackageInterface $defaultPackage The default package
*/
public function setDefaultPackage(PackageInterface $defaultPackage)
{
$this->defaultPackage = $defaultPackage;
}
/**
* Adds an asset package to the helper.
*
* @param string $name The package name
* @param PackageInterface $package The package
*/
public function addPackage($name, PackageInterface $package)
{
$this->namedPackages[$name] = $package;
}
/**
* Returns an asset package.
*
* @param string $name The name of the package or null for the default package
*
* @return PackageInterface An asset package
*
* @throws \InvalidArgumentException If there is no package by that name
*/
public function getPackage($name = null)
{
if (null === $name) {
return $this->defaultPackage;
}
if (!isset($this->namedPackages[$name])) {
throw new \InvalidArgumentException(sprintf('There is no "%s" asset package.', $name));
}
return $this->namedPackages[$name];
}
/**
* Gets the version to add to public URL.
*
* @param string $packageName A package name
*
* @return string The current version
*/
public function getVersion($packageName = null)
{
return $this->getPackage($packageName)->getVersion();
}
/**
* Returns the public path.
*
* Absolute paths (i.e. http://...) are returned unmodified.
*
* @param string $path A public path
* @param string $packageName The name of the asset package to use
*
* @return string A public path which takes into account the base path and URL path
*/
public function getUrl($path, $packageName = null)
{
return $this->getPackage($packageName)->getUrl($path);
}
/**
* Returns the canonical name of this helper.
*
* @return string The canonical name
*/
public function getName()
{
return 'assets';
}
}