Twig update to 3.0.0 and Renderer type hinting

This commit is contained in:
Igor Scheller 2019-11-29 19:38:28 +01:00
parent 15e6740e12
commit 577c052aff
18 changed files with 39 additions and 32 deletions

View File

@ -40,7 +40,7 @@
"swiftmailer/swiftmailer": "^6.2", "swiftmailer/swiftmailer": "^6.2",
"symfony/http-foundation": "^4.3", "symfony/http-foundation": "^4.3",
"symfony/psr-http-message-bridge": "^1.2", "symfony/psr-http-message-bridge": "^1.2",
"twig/twig": "^2.11", "twig/twig": "^3.0",
"vlucas/phpdotenv": "^3.3" "vlucas/phpdotenv": "^3.3"
}, },
"require-dev": { "require-dev": {

View File

@ -142,7 +142,7 @@ class MetricsEngine implements EngineInterface
* @param string|mixed[] $key * @param string|mixed[] $key
* @param mixed $value * @param mixed $value
*/ */
public function share($key, $value = null) public function share($key, $value = null): void
{ {
} }
} }

View File

@ -11,7 +11,7 @@ abstract class Engine implements EngineInterface
* @param mixed[]|string $key * @param mixed[]|string $key
* @param null $value * @param null $value
*/ */
public function share($key, $value = null) public function share($key, $value = null): void
{ {
if (!is_array($key)) { if (!is_array($key)) {
$key = [$key => $value]; $key = [$key => $value];

View File

@ -23,5 +23,5 @@ interface EngineInterface
* @param string|mixed[] $key * @param string|mixed[] $key
* @param mixed $value * @param mixed $value
*/ */
public function share($key, $value = null); public function share($key, $value = null): void;
} }

View File

@ -18,7 +18,7 @@ class Renderer
* @param mixed[] $data * @param mixed[] $data
* @return string * @return string
*/ */
public function render($template, $data = []) public function render(string $template, array $data = []): string
{ {
foreach ($this->renderer as $renderer) { foreach ($this->renderer as $renderer) {
if (!$renderer->canRender($template)) { if (!$renderer->canRender($template)) {
@ -40,7 +40,7 @@ class Renderer
* *
* @param EngineInterface $renderer * @param EngineInterface $renderer
*/ */
public function addRenderer(EngineInterface $renderer) public function addRenderer(EngineInterface $renderer): void
{ {
$this->renderer[] = $renderer; $this->renderer[] = $renderer;
} }

View File

@ -22,7 +22,7 @@ class Assets extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('asset', [$this, 'getAsset']), new TwigFunction('asset', [$this, 'getAsset']),
@ -31,9 +31,9 @@ class Assets extends TwigExtension
/** /**
* @param string $path * @param string $path
* @return UrlGenerator|string * @return string
*/ */
public function getAsset($path) public function getAsset(string $path): string
{ {
$path = ltrim($path, '/'); $path = ltrim($path, '/');

View File

@ -22,7 +22,7 @@ class Authentication extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('is_user', [$this, 'isAuthenticated']), new TwigFunction('is_user', [$this, 'isAuthenticated']),
@ -34,7 +34,7 @@ class Authentication extends TwigExtension
/** /**
* @return bool * @return bool
*/ */
public function isAuthenticated() public function isAuthenticated(): bool
{ {
return (bool)$this->auth->user(); return (bool)$this->auth->user();
} }
@ -42,7 +42,7 @@ class Authentication extends TwigExtension
/** /**
* @return bool * @return bool
*/ */
public function isGuest() public function isGuest(): bool
{ {
return !$this->isAuthenticated(); return !$this->isAuthenticated();
} }

View File

@ -22,7 +22,7 @@ class Config extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('config', [$this->config, 'get']), new TwigFunction('config', [$this->config, 'get']),

View File

@ -22,7 +22,7 @@ class Csrf extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('csrf', [$this, 'getCsrfField'], ['is_safe' => ['html']]), new TwigFunction('csrf', [$this, 'getCsrfField'], ['is_safe' => ['html']]),
@ -33,7 +33,7 @@ class Csrf extends TwigExtension
/** /**
* @return string * @return string
*/ */
public function getCsrfField() public function getCsrfField(): string
{ {
return sprintf('<input type="hidden" name="_token" value="%s">', $this->getCsrfToken()); return sprintf('<input type="hidden" name="_token" value="%s">', $this->getCsrfToken());
} }
@ -41,7 +41,7 @@ class Csrf extends TwigExtension
/** /**
* @return string * @return string
*/ */
public function getCsrfToken() public function getCsrfToken(): string
{ {
return $this->session->get('_token'); return $this->session->get('_token');
} }

View File

@ -24,7 +24,7 @@ class Globals extends TwigExtension implements GlobalsInterface
* *
* @return array An array of global variables * @return array An array of global variables
*/ */
public function getGlobals() public function getGlobals(): array
{ {
$user = $this->auth->user(); $user = $this->auth->user();

View File

@ -22,7 +22,7 @@ class Legacy extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
$isSafeHtml = ['is_safe' => ['html']]; $isSafeHtml = ['is_safe' => ['html']];
return [ return [
@ -39,7 +39,7 @@ class Legacy extends TwigExtension
/** /**
* @return string * @return string
*/ */
public function getPage() public function getPage(): string
{ {
if ($this->request->has('p')) { if ($this->request->has('p')) {
return $this->request->get('p'); return $this->request->get('p');

View File

@ -36,7 +36,7 @@ class Markdown extends TwigExtension
* @param string $text * @param string $text
* @return string * @return string
*/ */
public function render($text): string public function render(string $text): string
{ {
return $this->renderer->text(htmlspecialchars($text)); return $this->renderer->text(htmlspecialchars($text));
} }

View File

@ -22,7 +22,7 @@ class Session extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('session_get', [$this->session, 'get']), new TwigFunction('session_get', [$this->session, 'get']),

View File

@ -23,7 +23,7 @@ class Translation extends TwigExtension
/** /**
* @return array * @return array
*/ */
public function getFilters() public function getFilters(): array
{ {
return [ return [
new TwigFilter('trans', [$this->translator, 'translate']), new TwigFilter('trans', [$this->translator, 'translate']),
@ -33,7 +33,7 @@ class Translation extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('__', [$this->translator, 'translate']), new TwigFunction('__', [$this->translator, 'translate']),

View File

@ -22,7 +22,7 @@ class Url extends TwigExtension
/** /**
* @return TwigFunction[] * @return TwigFunction[]
*/ */
public function getFunctions() public function getFunctions(): array
{ {
return [ return [
new TwigFunction('url', [$this, 'getUrl']), new TwigFunction('url', [$this, 'getUrl']),
@ -32,9 +32,9 @@ class Url extends TwigExtension
/** /**
* @param string $path * @param string $path
* @param array $parameters * @param array $parameters
* @return UrlGenerator|string * @return string
*/ */
public function getUrl($path, $parameters = []) public function getUrl(string $path, array $parameters = []): string
{ {
$path = str_replace('_', '-', $path); $path = str_replace('_', '-', $path);

View File

@ -10,10 +10,10 @@ class TwigLoader extends FilesystemLoader
/** /**
* @param string $name * @param string $name
* @param bool $throw * @param bool $throw
* @return string|false|null * @return string|null
* @throws ErrorLoader * @throws ErrorLoader
*/ */
public function findTemplate($name, $throw = true) public function findTemplate(string $name, bool $throw = true): ?string
{ {
$extension = '.twig'; $extension = '.twig';
$extensionLength = mb_strlen($extension); $extensionLength = mb_strlen($extension);

View File

@ -95,7 +95,7 @@ class TwigServiceProvider extends ServiceProvider
* @param string $class * @param string $class
* @param string $alias * @param string $alias
*/ */
protected function registerTwigExtensions($class, $alias) protected function registerTwigExtensions(string $class, string $alias)
{ {
$alias = 'twig.extension.' . $alias; $alias = 'twig.extension.' . $alias;

View File

@ -12,6 +12,7 @@ use ReflectionClass as Reflection;
use ReflectionException; use ReflectionException;
use stdClass; use stdClass;
use Twig\Environment as Twig; use Twig\Environment as Twig;
use Twig\Extension\AbstractExtension;
use Twig\Extension\CoreExtension as TwigCore; use Twig\Extension\CoreExtension as TwigCore;
use Twig\Extension\ExtensionInterface as ExtensionInterface; use Twig\Extension\ExtensionInterface as ExtensionInterface;
use Twig\Loader\LoaderInterface as TwigLoaderInterface; use Twig\Loader\LoaderInterface as TwigLoaderInterface;
@ -103,9 +104,15 @@ class TwigServiceProviderTest extends ServiceProviderTest
/** @var Config|MockObject $config */ /** @var Config|MockObject $config */
$config = $this->createMock(Config::class); $config = $this->createMock(Config::class);
/** @var TwigCore|MockObject $twigCore */ /** @var TwigCore|MockObject $twigCore */
$twigCore = $this->getMockBuilder(stdClass::class) $twigCore = $this->getMockForAbstractClass(
->addMethods(['setTimezone']) AbstractExtension::class,
->getMock(); [],
'',
true,
true,
true,
['setTimezone']
);
$app = $this->getApp(['make', 'instance', 'tag', 'get']); $app = $this->getApp(['make', 'instance', 'tag', 'get']);