bug #17298 [FrameworkBundle] Use proper class to fetch $versionStrategy property (dosten)

This PR was submitted for the 2.8 branch but it was merged into the 2.7 branch instead (closes #17298).

Discussion
----------

[FrameworkBundle] Use proper class to fetch $versionStrategy property

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #17259
| License       | MIT

This is a replacement of #17260

Commits
-------

e38fa13 Use proper class to fetch $versionStrategy property
This commit is contained in:
Fabien Potencier 2016-01-07 19:01:12 +01:00
commit 4d536bd09a
3 changed files with 11 additions and 9 deletions

View File

@ -98,19 +98,16 @@ class AssetExtension extends \Twig_Extension
{
if ($version) {
$package = $this->packages->getPackage($packageName);
$class = new \ReflectionClass($package);
while ('Symfony\Component\Asset\Package' !== $class->getName()) {
$class = $class->getParentClass();
}
$v = $class->getProperty('versionStrategy');
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$v->setAccessible(true);
$currentVersionStrategy = $v->getValue($package);
if (property_exists($currentVersionStrategy, 'format')) {
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true);
$format = $f->getValue($currentVersionStrategy);
$v->setValue($package, new StaticVersionStrategy($version, $format));

View File

@ -95,13 +95,14 @@ class AssetsHelper extends Helper
if ($version) {
$package = $this->packages->getPackage($packageName);
$v = new \ReflectionProperty($package, 'versionStrategy');
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$v->setAccessible(true);
$currentVersionStrategy = $v->getValue($package);
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true);
$format = $f->getValue($currentVersionStrategy);
$v->setValue($package, new StaticVersionStrategy($version, $format));

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Templating\Helper;
use Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper;
use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\Packages;
use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
class AssetsHelperTest extends \PHPUnit_Framework_TestCase
@ -23,11 +24,14 @@ class AssetsHelperTest extends \PHPUnit_Framework_TestCase
*/
public function testLegacyGetUrl()
{
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s'));
$packages = new Packages($package);
$versionStrategy = new StaticVersionStrategy('22', '%s?version=%s');
$package = new Package($versionStrategy);
$imagePackage = new PathPackage('images', $versionStrategy);
$packages = new Packages($package, array('images' => $imagePackage));
$helper = new AssetsHelper($packages);
$this->assertEquals('me.png?version=42', $helper->getUrl('me.png', null, '42'));
$this->assertEquals('/images/me.png?version=42', $helper->getUrl('me.png', 'images', '42'));
}
/**