mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-16 20:36:33 +00:00
[2.x] Allow using namespaced aliases as extension names
This commit is contained in:
@@ -64,7 +64,13 @@ final class Twig_ExtensionSet
|
||||
*/
|
||||
public function hasExtension($class)
|
||||
{
|
||||
return isset($this->extensions[ltrim($class, '\\')]);
|
||||
$class = ltrim($class, '\\');
|
||||
if (!isset($this->extensions[$class]) && class_exists($class, false)) {
|
||||
// For BC/FC with namespaced aliases
|
||||
$class = (new ReflectionClass($class))->name;
|
||||
}
|
||||
|
||||
return isset($this->extensions[$class]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,6 +83,10 @@ final class Twig_ExtensionSet
|
||||
public function getExtension($class)
|
||||
{
|
||||
$class = ltrim($class, '\\');
|
||||
if (!isset($this->extensions[$class]) && class_exists($class, false)) {
|
||||
// For BC/FC with namespaced aliases
|
||||
$class = (new ReflectionClass($class))->name;
|
||||
}
|
||||
|
||||
if (!isset($this->extensions[$class])) {
|
||||
throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $class));
|
||||
|
||||
@@ -249,6 +249,9 @@ class Twig_Tests_EnvironmentTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$this->assertSame($ext, $twig->getExtension('Twig_Tests_EnvironmentTest_Extension'));
|
||||
$this->assertSame($ext, $twig->getExtension('\Twig_Tests_EnvironmentTest_Extension'));
|
||||
|
||||
$this->assertTrue($twig->hasExtension('Twig\Tests\EnvironmentTest\Extension'));
|
||||
$this->assertSame($ext, $twig->getExtension('Twig\Tests\EnvironmentTest\Extension'));
|
||||
}
|
||||
|
||||
public function testAddExtension()
|
||||
@@ -448,6 +451,7 @@ class Twig_Tests_EnvironmentTest_Extension extends Twig_Extension implements Twi
|
||||
);
|
||||
}
|
||||
}
|
||||
class_alias('Twig_Tests_EnvironmentTest_Extension', 'Twig\Tests\EnvironmentTest\Extension', false);
|
||||
|
||||
class Twig_Tests_EnvironmentTest_TokenParser extends Twig_TokenParser
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user