[TWIG] Add `instanceof` test

Use with:
{% if var is instanceof(Namespace\Class) %}
这个提交包含在:
Hugo Sales 2021-09-27 10:38:06 +01:00
父节点 2d8b220e92
当前提交 1107d8257d
签署人:: someonewithpc
GPG 密钥 ID: 7D0C7EAFC9D835A0
共有 2 个文件被更改,包括 14 次插入1 次删除

查看文件

@ -32,6 +32,7 @@ namespace App\Twig;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
use Twig\TwigTest;
class Extension extends AbstractExtension
{
@ -42,6 +43,13 @@ class Extension extends AbstractExtension
];
}
public function getTests()
{
return [
new TwigTest('instanceof', [Runtime::class, 'isInstanceOf']),
];
}
/**
* get twig functions
*

查看文件

@ -119,11 +119,16 @@ class Runtime implements RuntimeExtensionInterface, EventSubscriberInterface
public function isFirefox(): bool
{
$re_has_chrome = '/.*(?i)\bchrome\b.*/m';
$re_has_gecko = '/.*(?i)\bgecko\b.*/m';
$re_has_gecko = '/.*(?i)\bgecko\b.*/m';
return (preg_match(pattern: $re_has_chrome, subject: $this->request->headers->get('User-Agent')) !== 1)
&& (preg_match(pattern: $re_has_gecko, subject: $this->request->headers->get('User-Agent')) === 1);
}
public function isInstanceOf($var, string $instance): bool
{
return $var instanceof $instance;
}
// ----------------------------------------------------------
/**