From fdc17066c192a0e61dfae485e88bd1123d7bc220 Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 20 Jul 2023 12:27:14 +0100 Subject: [PATCH 01/28] Deprecations and type inference improvements for template resolvers The return type for a template resolver _should_ simply be `string`. Any kind of failure should cause an exception, ideally something like `TemplateNotFound`. All existing resolvers are marked as `@final` and there are several additional deprecations to clean up un-documented behaviour. Signed-off-by: George Steel --- psalm-baseline.xml | 118 +++++++++++----------- src/Resolver/AggregateResolver.php | 35 +++++-- src/Resolver/PrefixPathStackResolver.php | 18 +++- src/Resolver/RelativeFallbackResolver.php | 2 + src/Resolver/ResolverInterface.php | 4 +- src/Resolver/TemplateMapResolver.php | 71 +++++++------ src/Resolver/TemplatePathStack.php | 86 ++++++++++------ test/Resolver/AggregateResolverTest.php | 8 +- test/Resolver/TemplatePathStackTest.php | 13 ++- 9 files changed, 211 insertions(+), 144 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 0acb49a4f..62ed9e6a9 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1584,9 +1584,15 @@ gettype($helpers) gettype($variables) + + __templateResolver->resolve($name, $this)]]> + $values + + string|Resolver + $__vars __template]]> @@ -1623,7 +1629,6 @@ string - string|Resolver getArrayCopy @@ -1634,7 +1639,6 @@ __filterChain->filter($this->__content)]]> - __templateResolver->resolve($name, $this)]]> __templateResolver]]> @@ -1670,57 +1674,56 @@ - - IteratorAggregate - - - $resolver - $resource + + lastLookupFailure]]> + lastLookupFailure]]> lastLookupFailure]]> lastLookupFailure]]> lastSuccessfulResolver]]> - - - false|string - - - resolve - - - $resource - - - null - - - $lastSuccessfulResolver - + lastSuccessfulResolver]]> + lastSuccessfulResolver]]> + - - $prefix - - - $result - + + resolve + + + (string) $prefix + - - - is_string($nameOrMap) + is_iterable($map) + is_iterable($map) - - IteratorAggregate - - - false|string - - - map[$name]]]> - + + map, $map)]]> + + + + is_string($path) + + + static::FAILURE_NOT_FOUND + static::FAILURE_NO_PATHS + + + setUseStreamWrapper + + + lastLookupFailure]]> + lastLookupFailure]]> + lastLookupFailure]]> + lastLookupFailure]]> + useStreamWrapper]]> + useStreamWrapper]]> + useViewStream]]> + useViewStream]]> + useViewStream]]> + is_string($path) @@ -1729,19 +1732,11 @@ false - $value - $value - $value - $value + + + + - - lastLookupFailure]]> - lastLookupFailure]]> - $value - - - paths]]> - (bool) $flag (bool) $flag @@ -2841,11 +2836,16 @@ $model - - - $test - $test - + + + assertNull + + + + + TemplatePathStack::FAILURE_NOT_FOUND + TemplatePathStack::FAILURE_NO_PATHS + diff --git a/src/Resolver/AggregateResolver.php b/src/Resolver/AggregateResolver.php index 11a3627f6..6146d2f5f 100644 --- a/src/Resolver/AggregateResolver.php +++ b/src/Resolver/AggregateResolver.php @@ -9,10 +9,15 @@ use Laminas\Stdlib\PriorityQueue; use Laminas\View\Renderer\RendererInterface as Renderer; use Laminas\View\Resolver\ResolverInterface as Resolver; -use ReturnTypeWillChange; // phpcs:ignore +use ReturnTypeWillChange; +use Traversable; use function count; +/** + * @final + * @implements IteratorAggregate + */ class AggregateResolver implements Countable, IteratorAggregate, Resolver { public const FAILURE_NO_RESOLVERS = 'AggregateResolver_Failure_No_Resolvers'; @@ -21,14 +26,20 @@ class AggregateResolver implements Countable, IteratorAggregate, Resolver /** * Last lookup failure * + * @deprecated This property will be removed in v3.0 of this component. + * * @var false|string */ protected $lastLookupFailure = false; - /** @var Resolver */ + /** + * @deprecated This property will be removed in v3.0 of this component. + * + * @var Resolver|null + */ protected $lastSuccessfulResolver; - /** @var PriorityQueue */ + /** @var PriorityQueue */ protected $queue; /** @@ -38,7 +49,10 @@ class AggregateResolver implements Countable, IteratorAggregate, Resolver */ public function __construct() { - $this->queue = new PriorityQueue(); + /** @var PriorityQueue $priorityQueue */ + $priorityQueue = new PriorityQueue(); + + $this->queue = $priorityQueue; } /** @@ -55,7 +69,7 @@ public function count() /** * IteratorAggregate: return internal iterator * - * @return PriorityQueue + * @return Traversable */ #[ReturnTypeWillChange] public function getIterator() @@ -67,7 +81,7 @@ public function getIterator() * Attach a resolver * * @param int $priority - * @return AggregateResolver + * @return $this */ public function attach(Resolver $resolver, $priority = 1) { @@ -92,6 +106,9 @@ public function resolve($name, ?Renderer $renderer = null) } foreach ($this->queue as $resolver) { + /** + * @todo This loop should be modified to try { return resolve } catch { continue } in v3.0 + */ $resource = $resolver->resolve($name, $renderer); if ($resource) { // Resource found; return it @@ -107,7 +124,9 @@ public function resolve($name, ?Renderer $renderer = null) /** * Return the last successful resolver, if any * - * @return Resolver + * @deprecated This method will be removed in v3.0 of this component + * + * @return Resolver|null */ public function getLastSuccessfulResolver() { @@ -117,6 +136,8 @@ public function getLastSuccessfulResolver() /** * Get last lookup failure * + * @deprecated This method will be removed in v3.0 of this component + * * @return false|string */ public function getLastLookupFailure() diff --git a/src/Resolver/PrefixPathStackResolver.php b/src/Resolver/PrefixPathStackResolver.php index 9c98402fa..816aaf856 100644 --- a/src/Resolver/PrefixPathStackResolver.php +++ b/src/Resolver/PrefixPathStackResolver.php @@ -10,22 +10,23 @@ use function strpos; use function substr; +/** @final */ final class PrefixPathStackResolver implements ResolverInterface { /** * Array containing prefix as key and "template path stack array" as value * - * @var string[]|string[][]|ResolverInterface[] + * @var array|string|ResolverInterface> */ private array $prefixes = []; /** * Constructor * - * @param string[]|string[][]|ResolverInterface[] $prefixes Set of path prefixes + * @param array|string|ResolverInterface> $prefixes Set of path prefixes * to be matched (array keys), with either a path or an array of paths - * to use for matching as in the {@see \Laminas\View\Resolver\TemplatePathStack}, - * or a {@see \Laminas\View\Resolver\ResolverInterface} + * to use for matching as in the {@see TemplatePathStack}, + * or a {@see ResolverInterface} * to use for view path starting with that prefix */ public function __construct(array $prefixes = []) @@ -47,11 +48,20 @@ public function resolve($name, ?Renderer $renderer = null) $resolver = new TemplatePathStack(['script_paths' => (array) $resolver]); } + /** + * @todo In V3, this should just try,return and catch,continue. + * It relies on internal knowledge that some resolvers return false when really + * they should always return a string or throw an exception. + */ if ($result = $resolver->resolve(substr($name, strlen($prefix)), $renderer)) { return $result; } } + /** + * @todo This should be exceptional. All resolvers are exhausted and no template can be found. + * It further deviates from the previously un-documented norm, that the return type is false-able + */ return; // phpcs:ignore } } diff --git a/src/Resolver/RelativeFallbackResolver.php b/src/Resolver/RelativeFallbackResolver.php index 1c6bb9c56..86aa010b8 100644 --- a/src/Resolver/RelativeFallbackResolver.php +++ b/src/Resolver/RelativeFallbackResolver.php @@ -20,6 +20,8 @@ * * This allows for usage of partial template paths such as `some/partial`, resolving to * `my/module/script/path/some/partial.phtml`, while rendering template `my/module/script/path/my-view` + * + * @final */ class RelativeFallbackResolver implements ResolverInterface { diff --git a/src/Resolver/ResolverInterface.php b/src/Resolver/ResolverInterface.php index 7c7e1036d..dec63d90f 100644 --- a/src/Resolver/ResolverInterface.php +++ b/src/Resolver/ResolverInterface.php @@ -11,8 +11,10 @@ interface ResolverInterface /** * Resolve a template/pattern name to a resource the renderer can consume * + * In version 3.0 of this component, this method will guarantee a string return type or an exception will be thrown. + * * @param string $name - * @return mixed + * @return string|false */ public function resolve($name, ?Renderer $renderer = null); } diff --git a/src/Resolver/TemplateMapResolver.php b/src/Resolver/TemplateMapResolver.php index 0e57fc998..5a8f5aea5 100644 --- a/src/Resolver/TemplateMapResolver.php +++ b/src/Resolver/TemplateMapResolver.php @@ -9,20 +9,26 @@ use Laminas\Stdlib\ArrayUtils; use Laminas\View\Exception; use Laminas\View\Renderer\RendererInterface as Renderer; -use ReturnTypeWillChange; // phpcs:ignore +use ReturnTypeWillChange; use Traversable; use function array_key_exists; use function array_replace_recursive; -use function gettype; -use function is_array; -use function is_object; +use function get_debug_type; +use function is_iterable; use function is_string; use function sprintf; +use function trigger_error; +use const E_USER_DEPRECATED; + +/** + * @implements IteratorAggregate + * @final + */ class TemplateMapResolver implements IteratorAggregate, ResolverInterface { - /** @var array */ + /** @var array */ protected $map = []; /** @@ -30,7 +36,7 @@ class TemplateMapResolver implements IteratorAggregate, ResolverInterface * * Instantiate and optionally populate template map. * - * @param array|Traversable $map + * @param iterable $map */ public function __construct($map = []) { @@ -40,7 +46,7 @@ public function __construct($map = []) /** * IteratorAggregate: return internal iterator * - * @return Traversable + * @return Traversable */ #[ReturnTypeWillChange] public function getIterator() @@ -53,17 +59,17 @@ public function getIterator() * * Maps should be arrays or Traversable objects with name => path pairs * - * @param array|Traversable $map + * @param iterable $map * @throws Exception\InvalidArgumentException - * @return TemplateMapResolver + * @return $this */ public function setMap($map) { - if (! is_array($map) && ! $map instanceof Traversable) { + if (! is_iterable($map)) { throw new Exception\InvalidArgumentException(sprintf( '%s: expects an array or Traversable, received "%s"', __METHOD__, - is_object($map) ? $map::class : gettype($map) + get_debug_type($map), )); } @@ -78,51 +84,54 @@ public function setMap($map) /** * Add an entry to the map * - * @param string|array|Traversable $nameOrMap - * @param null|string $path + * @param string|iterable $nameOrMap + * @param null|string $path * @throws Exception\InvalidArgumentException - * @return TemplateMapResolver + * @return $this */ public function add($nameOrMap, $path = null) { - if (is_array($nameOrMap) || $nameOrMap instanceof Traversable) { - $this->merge($nameOrMap); + if (is_string($nameOrMap) && ($path === null || $path === '')) { + trigger_error( + 'Using add() to remove individual templates is deprecated and will be removed in version 3.0', + E_USER_DEPRECATED, + ); + unset($this->map[$nameOrMap]); + return $this; } - if (! is_string($nameOrMap)) { + $map = is_string($nameOrMap) && is_string($path) + ? [$nameOrMap => $path] + : $nameOrMap; + + if (! is_iterable($map)) { throw new Exception\InvalidArgumentException(sprintf( '%s: expects a string, array, or Traversable for the first argument; received "%s"', __METHOD__, - is_object($nameOrMap) ? $nameOrMap::class : gettype($nameOrMap) + get_debug_type($map), )); } - if (empty($path)) { - if (isset($this->map[$nameOrMap])) { - unset($this->map[$nameOrMap]); - } - return $this; - } + $this->merge($map); - $this->map[$nameOrMap] = $path; return $this; } /** * Merge internal map with provided map * - * @param array|Traversable $map + * @param iterable $map * @throws Exception\InvalidArgumentException - * @return TemplateMapResolver + * @return $this */ public function merge($map) { - if (! is_array($map) && ! $map instanceof Traversable) { + if (! is_iterable($map)) { throw new Exception\InvalidArgumentException(sprintf( '%s: expects an array or Traversable, received "%s"', __METHOD__, - is_object($map) ? $map::class : gettype($map) + get_debug_type($map), )); } @@ -155,15 +164,17 @@ public function has($name) public function get($name) { if (! $this->has($name)) { + // @TODO This should be exceptional return false; } + return $this->map[$name]; } /** * Retrieve the template map * - * @return array + * @return array */ public function getMap() { diff --git a/src/Resolver/TemplatePathStack.php b/src/Resolver/TemplatePathStack.php index 8d07726e0..6ddeb1f06 100644 --- a/src/Resolver/TemplatePathStack.php +++ b/src/Resolver/TemplatePathStack.php @@ -4,6 +4,7 @@ namespace Laminas\View\Resolver; +use Laminas\Stdlib\ArrayUtils; use Laminas\Stdlib\SplStack; use Laminas\View\Exception; use Laminas\View\Renderer\RendererInterface as Renderer; @@ -11,6 +12,7 @@ use SplFileInfo; use Traversable; +use function array_change_key_case; use function count; use function file_exists; use function gettype; @@ -27,7 +29,6 @@ use function stream_get_wrappers; use function stream_wrapper_register; use function strpos; -use function strtolower; use const DIRECTORY_SEPARATOR; use const PATHINFO_EXTENSION; @@ -36,10 +37,19 @@ * Resolves view scripts based on a stack of paths * * @psalm-type PathStack = SplStack + * @psalm-type Options = array{ + * lfi_protection?: bool, + * script_paths?: list, + * default_suffix?: string, + * use_stream_wrapper?: bool, + * } + * @final */ class TemplatePathStack implements ResolverInterface { - public const FAILURE_NO_PATHS = 'TemplatePathStack_Failure_No_Paths'; + /** @deprecated */ + public const FAILURE_NO_PATHS = 'TemplatePathStack_Failure_No_Paths'; + /** @deprecated */ public const FAILURE_NOT_FOUND = 'TemplatePathStack_Failure_Not_Found'; /** @@ -57,6 +67,8 @@ class TemplatePathStack implements ResolverInterface /** * Reason for last lookup failure * + * @deprecated This property will be removed in v3.0 of this component. + * * @var false|string */ protected $lastLookupFailure = false; @@ -72,18 +84,22 @@ class TemplatePathStack implements ResolverInterface * Flags used to determine if a stream wrapper should be used for enabling short tags */ - /** @var bool */ + /** + * @deprecated Stream wrapper functionality will be removed in version 3.0 of this component + * + * @var bool + */ protected $useViewStream = false; - /** @var bool */ + /** + * @deprecated Stream wrapper functionality will be removed in version 3.0 of this component + * + * @var bool + */ protected $useStreamWrapper = false; /**@-*/ - /** - * Constructor - * - * @param null|array|Traversable $options - */ + /** @param null|Options|Traversable $options */ public function __construct($options = null) { $this->useViewStream = (bool) ini_get('short_open_tag'); @@ -105,7 +121,7 @@ public function __construct($options = null) /** * Configure object * - * @param array|Traversable $options + * @param Options|Traversable $options * @return void * @throws Exception\InvalidArgumentException */ @@ -119,24 +135,23 @@ public function setOptions($options) )); } - foreach ($options as $key => $value) { - switch (strtolower($key)) { - case 'lfi_protection': - $this->setLfiProtection($value); - break; - case 'script_paths': - $this->addPaths($value); - break; - case 'use_stream_wrapper': - /** @psalm-suppress DeprecatedMethod */ - $this->setUseStreamWrapper($value); - break; - case 'default_suffix': - $this->setDefaultSuffix($value); - break; - default: - break; - } + $options = $options instanceof Traversable ? ArrayUtils::iteratorToArray($options) : $options; + $options = array_change_key_case($options); + + if (isset($options['lfi_protection'])) { + $this->setLfiProtection($options['lfi_protection']); + } + + if (isset($options['script_paths'])) { + $this->addPaths($options['script_paths']); + } + + if (isset($options['use_stream_wrapper'])) { + $this->setUseStreamWrapper($options['use_stream_wrapper']); + } + + if (isset($options['default_suffix'])) { + $this->setDefaultSuffix($options['default_suffix']); } } @@ -144,7 +159,7 @@ public function setOptions($options) * Set default file suffix * * @param string $defaultSuffix - * @return TemplatePathStack + * @return $this */ public function setDefaultSuffix($defaultSuffix) { @@ -167,7 +182,7 @@ public function getDefaultSuffix() * Add many paths to the stack at once * * @param list $paths - * @return TemplatePathStack + * @return $this */ public function addPaths(array $paths) { @@ -178,7 +193,7 @@ public function addPaths(array $paths) } /** - * Rest the path stack to the paths provided + * Reset the path stack to the paths provided * * @param PathStack|list $paths * @return TemplatePathStack @@ -223,7 +238,7 @@ public static function normalizePath($path) * Add a single path to the stack * * @param string $path - * @return TemplatePathStack + * @return $this * @throws Exception\InvalidArgumentException */ public function addPath($path) @@ -234,7 +249,7 @@ public function addPath($path) gettype($path) )); } - $this->paths[] = static::normalizePath($path); + $this->paths->push(static::normalizePath($path)); return $this; } @@ -330,6 +345,7 @@ public function resolve($name, ?Renderer $renderer = null) if (! count($this->paths)) { $this->lastLookupFailure = static::FAILURE_NO_PATHS; + // @TODO In version 3, this should become an exception return false; } @@ -360,12 +376,16 @@ public function resolve($name, ?Renderer $renderer = null) } $this->lastLookupFailure = static::FAILURE_NOT_FOUND; + // @TODO This should become an exception in v3.0 return false; } /** * Get the last lookup failure message, if any * + * @deprecated In version 3.0, this resolver will throw exceptions instead of + * incorrectly returning false from resolve() + * * @return false|string */ public function getLastLookupFailure() diff --git a/test/Resolver/AggregateResolverTest.php b/test/Resolver/AggregateResolverTest.php index e34ccc1ca..7afe221d7 100644 --- a/test/Resolver/AggregateResolverTest.php +++ b/test/Resolver/AggregateResolverTest.php @@ -8,23 +8,21 @@ use Laminas\View\Resolver; use PHPUnit\Framework\TestCase; -use function count; - class AggregateResolverTest extends TestCase { public function testAggregateIsEmptyByDefault(): void { $resolver = new Resolver\AggregateResolver(); - $this->assertEquals(0, count($resolver)); + $this->assertCount(0, $resolver); } public function testCanAttachResolvers(): void { $resolver = new Resolver\AggregateResolver(); $resolver->attach(new Resolver\TemplateMapResolver()); - $this->assertEquals(1, count($resolver)); + $this->assertCount(1, $resolver); $resolver->attach(new Resolver\TemplateMapResolver()); - $this->assertEquals(2, count($resolver)); + $this->assertCount(2, $resolver); } public function testReturnsNonFalseValueWhenAtLeastOneResolverSucceeds(): void diff --git a/test/Resolver/TemplatePathStackTest.php b/test/Resolver/TemplatePathStackTest.php index 636366e26..f62100fdc 100644 --- a/test/Resolver/TemplatePathStackTest.php +++ b/test/Resolver/TemplatePathStackTest.php @@ -18,11 +18,14 @@ use const DIRECTORY_SEPARATOR; +/** + * @psalm-import-type Options from TemplatePathStack + */ class TemplatePathStackTest extends TestCase { private TemplatePathStack $stack; - /** @var string[] */ + /** @var list */ private array $paths; private string $baseDir; @@ -197,7 +200,7 @@ public function testSettingOptionsWithInvalidArgumentRaisesException(mixed $opti } /** - * @return array|ArrayObject}> + * @return array */ public static function validOptions(): array { @@ -213,7 +216,7 @@ public static function validOptions(): array } /** - * @param array|ArrayObject $options + * @param Options|ArrayObject $options */ #[DataProvider('validOptions')] public function testAllowsSettingOptions($options): void @@ -226,13 +229,13 @@ public function testAllowsSettingOptions($options): void /** @psalm-suppress DeprecatedMethod */ $this->assertSame($expected, $this->stack->useStreamWrapper()); - $this->assertSame($options['default_suffix'], $this->stack->getDefaultSuffix()); + $this->assertSame($options['default_suffix'] ?? null, $this->stack->getDefaultSuffix()); $this->assertEquals(array_reverse($this->paths), $this->stack->getPaths()->toArray()); } /** - * @param array|ArrayObject $options + * @param Options|ArrayObject $options */ #[DataProvider('validOptions')] public function testAllowsPassingOptionsToConstructor($options): void From ef07f1de3e847483b5ca6855fc416ded4fa0afd7 Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 17 Aug 2023 11:29:50 +0100 Subject: [PATCH 02/28] Collect V2 Docs into a sub-folder Moves all docs to v2/ in preparation for v3 documentation changes Signed-off-by: George Steel --- .../application-integration/stand-alone.md | 0 .../setting-module-specific-layouts.md | 0 docs/book/{ => v2}/helpers/advanced-usage.md | 0 docs/book/{ => v2}/helpers/asset.md | 0 docs/book/{ => v2}/helpers/base-path.md | 0 docs/book/{ => v2}/helpers/cycle.md | 0 docs/book/{ => v2}/helpers/doctype.md | 0 docs/book/{ => v2}/helpers/escape.md | 0 docs/book/{ => v2}/helpers/flash-messenger.md | 0 docs/book/{ => v2}/helpers/gravatar-image.md | 0 docs/book/{ => v2}/helpers/gravatar.md | 0 docs/book/{ => v2}/helpers/head-link.md | 0 docs/book/{ => v2}/helpers/head-meta.md | 0 docs/book/{ => v2}/helpers/head-script.md | 0 docs/book/{ => v2}/helpers/head-style.md | 0 docs/book/{ => v2}/helpers/head-title.md | 0 docs/book/{ => v2}/helpers/html-attributes.md | 0 docs/book/{ => v2}/helpers/html-list.md | 0 docs/book/{ => v2}/helpers/html-object.md | 0 docs/book/{ => v2}/helpers/html-tag.md | 0 docs/book/{ => v2}/helpers/identity.md | 0 docs/book/{ => v2}/helpers/inline-script.md | 0 docs/book/{ => v2}/helpers/intro.md | 0 docs/book/{ => v2}/helpers/json.md | 0 docs/book/{ => v2}/helpers/layout.md | 0 docs/book/{ => v2}/helpers/partial.md | 0 docs/book/{ => v2}/helpers/placeholder.md | 0 docs/book/{ => v2}/helpers/url.md | 0 docs/book/{ => v2}/php-renderer.md | 0 docs/book/{ => v2}/quick-start.md | 0 docs/book/{ => v2}/view-event.md | 0 docs/book/{ => v2}/view-scripts.md | 0 mkdocs.yml | 113 ++++++++++++------ 33 files changed, 76 insertions(+), 37 deletions(-) rename docs/book/{ => v2}/application-integration/stand-alone.md (100%) rename docs/book/{ => v2}/cookbook/setting-module-specific-layouts.md (100%) rename docs/book/{ => v2}/helpers/advanced-usage.md (100%) rename docs/book/{ => v2}/helpers/asset.md (100%) rename docs/book/{ => v2}/helpers/base-path.md (100%) rename docs/book/{ => v2}/helpers/cycle.md (100%) rename docs/book/{ => v2}/helpers/doctype.md (100%) rename docs/book/{ => v2}/helpers/escape.md (100%) rename docs/book/{ => v2}/helpers/flash-messenger.md (100%) rename docs/book/{ => v2}/helpers/gravatar-image.md (100%) rename docs/book/{ => v2}/helpers/gravatar.md (100%) rename docs/book/{ => v2}/helpers/head-link.md (100%) rename docs/book/{ => v2}/helpers/head-meta.md (100%) rename docs/book/{ => v2}/helpers/head-script.md (100%) rename docs/book/{ => v2}/helpers/head-style.md (100%) rename docs/book/{ => v2}/helpers/head-title.md (100%) rename docs/book/{ => v2}/helpers/html-attributes.md (100%) rename docs/book/{ => v2}/helpers/html-list.md (100%) rename docs/book/{ => v2}/helpers/html-object.md (100%) rename docs/book/{ => v2}/helpers/html-tag.md (100%) rename docs/book/{ => v2}/helpers/identity.md (100%) rename docs/book/{ => v2}/helpers/inline-script.md (100%) rename docs/book/{ => v2}/helpers/intro.md (100%) rename docs/book/{ => v2}/helpers/json.md (100%) rename docs/book/{ => v2}/helpers/layout.md (100%) rename docs/book/{ => v2}/helpers/partial.md (100%) rename docs/book/{ => v2}/helpers/placeholder.md (100%) rename docs/book/{ => v2}/helpers/url.md (100%) rename docs/book/{ => v2}/php-renderer.md (100%) rename docs/book/{ => v2}/quick-start.md (100%) rename docs/book/{ => v2}/view-event.md (100%) rename docs/book/{ => v2}/view-scripts.md (100%) diff --git a/docs/book/application-integration/stand-alone.md b/docs/book/v2/application-integration/stand-alone.md similarity index 100% rename from docs/book/application-integration/stand-alone.md rename to docs/book/v2/application-integration/stand-alone.md diff --git a/docs/book/cookbook/setting-module-specific-layouts.md b/docs/book/v2/cookbook/setting-module-specific-layouts.md similarity index 100% rename from docs/book/cookbook/setting-module-specific-layouts.md rename to docs/book/v2/cookbook/setting-module-specific-layouts.md diff --git a/docs/book/helpers/advanced-usage.md b/docs/book/v2/helpers/advanced-usage.md similarity index 100% rename from docs/book/helpers/advanced-usage.md rename to docs/book/v2/helpers/advanced-usage.md diff --git a/docs/book/helpers/asset.md b/docs/book/v2/helpers/asset.md similarity index 100% rename from docs/book/helpers/asset.md rename to docs/book/v2/helpers/asset.md diff --git a/docs/book/helpers/base-path.md b/docs/book/v2/helpers/base-path.md similarity index 100% rename from docs/book/helpers/base-path.md rename to docs/book/v2/helpers/base-path.md diff --git a/docs/book/helpers/cycle.md b/docs/book/v2/helpers/cycle.md similarity index 100% rename from docs/book/helpers/cycle.md rename to docs/book/v2/helpers/cycle.md diff --git a/docs/book/helpers/doctype.md b/docs/book/v2/helpers/doctype.md similarity index 100% rename from docs/book/helpers/doctype.md rename to docs/book/v2/helpers/doctype.md diff --git a/docs/book/helpers/escape.md b/docs/book/v2/helpers/escape.md similarity index 100% rename from docs/book/helpers/escape.md rename to docs/book/v2/helpers/escape.md diff --git a/docs/book/helpers/flash-messenger.md b/docs/book/v2/helpers/flash-messenger.md similarity index 100% rename from docs/book/helpers/flash-messenger.md rename to docs/book/v2/helpers/flash-messenger.md diff --git a/docs/book/helpers/gravatar-image.md b/docs/book/v2/helpers/gravatar-image.md similarity index 100% rename from docs/book/helpers/gravatar-image.md rename to docs/book/v2/helpers/gravatar-image.md diff --git a/docs/book/helpers/gravatar.md b/docs/book/v2/helpers/gravatar.md similarity index 100% rename from docs/book/helpers/gravatar.md rename to docs/book/v2/helpers/gravatar.md diff --git a/docs/book/helpers/head-link.md b/docs/book/v2/helpers/head-link.md similarity index 100% rename from docs/book/helpers/head-link.md rename to docs/book/v2/helpers/head-link.md diff --git a/docs/book/helpers/head-meta.md b/docs/book/v2/helpers/head-meta.md similarity index 100% rename from docs/book/helpers/head-meta.md rename to docs/book/v2/helpers/head-meta.md diff --git a/docs/book/helpers/head-script.md b/docs/book/v2/helpers/head-script.md similarity index 100% rename from docs/book/helpers/head-script.md rename to docs/book/v2/helpers/head-script.md diff --git a/docs/book/helpers/head-style.md b/docs/book/v2/helpers/head-style.md similarity index 100% rename from docs/book/helpers/head-style.md rename to docs/book/v2/helpers/head-style.md diff --git a/docs/book/helpers/head-title.md b/docs/book/v2/helpers/head-title.md similarity index 100% rename from docs/book/helpers/head-title.md rename to docs/book/v2/helpers/head-title.md diff --git a/docs/book/helpers/html-attributes.md b/docs/book/v2/helpers/html-attributes.md similarity index 100% rename from docs/book/helpers/html-attributes.md rename to docs/book/v2/helpers/html-attributes.md diff --git a/docs/book/helpers/html-list.md b/docs/book/v2/helpers/html-list.md similarity index 100% rename from docs/book/helpers/html-list.md rename to docs/book/v2/helpers/html-list.md diff --git a/docs/book/helpers/html-object.md b/docs/book/v2/helpers/html-object.md similarity index 100% rename from docs/book/helpers/html-object.md rename to docs/book/v2/helpers/html-object.md diff --git a/docs/book/helpers/html-tag.md b/docs/book/v2/helpers/html-tag.md similarity index 100% rename from docs/book/helpers/html-tag.md rename to docs/book/v2/helpers/html-tag.md diff --git a/docs/book/helpers/identity.md b/docs/book/v2/helpers/identity.md similarity index 100% rename from docs/book/helpers/identity.md rename to docs/book/v2/helpers/identity.md diff --git a/docs/book/helpers/inline-script.md b/docs/book/v2/helpers/inline-script.md similarity index 100% rename from docs/book/helpers/inline-script.md rename to docs/book/v2/helpers/inline-script.md diff --git a/docs/book/helpers/intro.md b/docs/book/v2/helpers/intro.md similarity index 100% rename from docs/book/helpers/intro.md rename to docs/book/v2/helpers/intro.md diff --git a/docs/book/helpers/json.md b/docs/book/v2/helpers/json.md similarity index 100% rename from docs/book/helpers/json.md rename to docs/book/v2/helpers/json.md diff --git a/docs/book/helpers/layout.md b/docs/book/v2/helpers/layout.md similarity index 100% rename from docs/book/helpers/layout.md rename to docs/book/v2/helpers/layout.md diff --git a/docs/book/helpers/partial.md b/docs/book/v2/helpers/partial.md similarity index 100% rename from docs/book/helpers/partial.md rename to docs/book/v2/helpers/partial.md diff --git a/docs/book/helpers/placeholder.md b/docs/book/v2/helpers/placeholder.md similarity index 100% rename from docs/book/helpers/placeholder.md rename to docs/book/v2/helpers/placeholder.md diff --git a/docs/book/helpers/url.md b/docs/book/v2/helpers/url.md similarity index 100% rename from docs/book/helpers/url.md rename to docs/book/v2/helpers/url.md diff --git a/docs/book/php-renderer.md b/docs/book/v2/php-renderer.md similarity index 100% rename from docs/book/php-renderer.md rename to docs/book/v2/php-renderer.md diff --git a/docs/book/quick-start.md b/docs/book/v2/quick-start.md similarity index 100% rename from docs/book/quick-start.md rename to docs/book/v2/quick-start.md diff --git a/docs/book/view-event.md b/docs/book/v2/view-event.md similarity index 100% rename from docs/book/view-event.md rename to docs/book/v2/view-event.md diff --git a/docs/book/view-scripts.md b/docs/book/v2/view-scripts.md similarity index 100% rename from docs/book/view-scripts.md rename to docs/book/v2/view-scripts.md diff --git a/mkdocs.yml b/mkdocs.yml index 2f7336948..3886f5029 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,44 +1,83 @@ docs_dir: docs/book site_dir: docs/html nav: - - Home: index.md - - "Quick Start": quick-start.md - - "Rendering Views": - - "The PhpRenderer": php-renderer.md - - "View Scripts": view-scripts.md - - "The ViewEvent": view-event.md - - Helpers: - - Introduction: helpers/intro.md - - Asset: helpers/asset.md - - BasePath: helpers/base-path.md - - Cycle: helpers/cycle.md - - Doctype: helpers/doctype.md - - Escape: helpers/escape.md - - FlashMessenger: helpers/flash-messenger.md - - Gravatar: helpers/gravatar.md - - HeadLink: helpers/head-link.md - - HeadMeta: helpers/head-meta.md - - HeadScript: helpers/head-script.md - - HeadStyle: helpers/head-style.md - - HeadTitle: helpers/head-title.md - - HtmlAttributes: helpers/html-attributes.md - - HtmlList: helpers/html-list.md - - HtmlObject: helpers/html-object.md - - HtmlTag: helpers/html-tag.md - - Identity: helpers/identity.md - - InlineScript: helpers/inline-script.md - - Json: helpers/json.md - - Layout: helpers/layout.md - - Partial: helpers/partial.md - - Placeholder: helpers/placeholder.md - - Url: helpers/url.md - - "Advanced usage of helpers": helpers/advanced-usage.md - - 'Application Integration': - - 'Stand-Alone': application-integration/stand-alone.md - - Cookbook: - - "Setting module-specific Layouts": cookbook/setting-module-specific-layouts.md + - Home: index.md + - v2: + - "Quick Start": v2/quick-start.md + - "Rendering Views": + - "The PhpRenderer": v2/php-renderer.md + - "View Scripts": v2/view-scripts.md + - "The ViewEvent": v2/view-event.md + - Helpers: + - Introduction: v2/helpers/intro.md + - Asset: v2/helpers/asset.md + - BasePath: v2/helpers/base-path.md + - Cycle: v2/helpers/cycle.md + - Doctype: v2/helpers/doctype.md + - Escape: v2/helpers/escape.md + - FlashMessenger: v2/helpers/flash-messenger.md + - Gravatar: v2/helpers/gravatar.md + - HeadLink: v2/helpers/head-link.md + - HeadMeta: v2/helpers/head-meta.md + - HeadScript: v2/helpers/head-script.md + - HeadStyle: v2/helpers/head-style.md + - HeadTitle: v2/helpers/head-title.md + - HtmlAttributes: v2/helpers/html-attributes.md + - HtmlList: v2/helpers/html-list.md + - HtmlObject: v2/helpers/html-object.md + - HtmlTag: v2/helpers/html-tag.md + - Identity: v2/helpers/identity.md + - InlineScript: v2/helpers/inline-script.md + - Json: v2/helpers/json.md + - Layout: v2/helpers/layout.md + - Partial: v2/helpers/partial.md + - Placeholder: v2/helpers/placeholder.md + - Url: v2/helpers/url.md + - "Advanced usage of helpers": v2/helpers/advanced-usage.md + - 'Application Integration': + - 'Stand-Alone': v2/application-integration/stand-alone.md + - Cookbook: + - "Setting module-specific Layouts": v2/cookbook/setting-module-specific-layouts.md site_name: laminas-view site_description: 'Flexible view layer supporting and providing multiple view layers, helpers, and more.' repo_url: 'https://github.com/laminas/laminas-view' extra: - project: Components + project: Components + current_version: v2 + versions: + - v2 + +plugins: + - redirects: + redirect_maps: + quick-start.md: v2/quick-start.md + php-renderer.md: v2/php-renderer.md + view-scripts.md: v2/view-scripts.md + view-event.md: v2/view-event.md + helpers/intro.md: v2/helpers/intro.md + helpers/asset.md: v2/helpers/asset.md + helpers/base-path.md: v2/helpers/base-path.md + helpers/cycle.md: v2/helpers/cycle.md + helpers/doctype.md: v2/helpers/doctype.md + helpers/escape.md: v2/helpers/escape.md + helpers/flash-messenger.md: v2/helpers/flash-messenger.md + helpers/gravatar.md: v2/helpers/gravatar.md + helpers/head-link.md: v2/helpers/head-link.md + helpers/head-meta.md: v2/helpers/head-meta.md + helpers/head-script.md: v2/helpers/head-script.md + helpers/head-style.md: v2/helpers/head-style.md + helpers/head-title.md: v2/helpers/head-title.md + helpers/html-attributes.md: v2/helpers/html-attributes.md + helpers/html-list.md: v2/helpers/html-list.md + helpers/html-object.md: v2/helpers/html-object.md + helpers/html-tag.md: v2/helpers/html-tag.md + helpers/identity.md: v2/helpers/identity.md + helpers/inline-script.md: v2/helpers/inline-script.md + helpers/json.md: v2/helpers/json.md + helpers/layout.md: v2/helpers/layout.md + helpers/partial.md: v2/helpers/partial.md + helpers/placeholder.md: v2/helpers/placeholder.md + helpers/url.md: v2/helpers/url.md + helpers/advanced-usage.md: v2/helpers/advanced-usage.md + application-integration/stand-alone.md: v2/application-integration/stand-alone.md + cookbook/setting-module-specific-layouts.md: v2/cookbook/setting-module-specific-layouts.md From 2e0453f1f8c521e9743cdae333af99f5ecd60303 Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 17 Aug 2023 11:39:54 +0100 Subject: [PATCH 03/28] Minor linting fixes Signed-off-by: George Steel --- docs/book/v2/helpers/intro.md | 2 +- docs/book/v2/view-scripts.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/book/v2/helpers/intro.md b/docs/book/v2/helpers/intro.md index c8ad11eb4..772b80990 100644 --- a/docs/book/v2/helpers/intro.md +++ b/docs/book/v2/helpers/intro.md @@ -61,7 +61,7 @@ for, and rendering, the various HTML `` tags, such as `HeadTitle`, - [Cycle](cycle.md) - [Doctype](doctype.md) - [FlashMessenger](flash-messenger.md) -- [Gravatar](gravatar.md) _(Deprecated)_ +- [Gravatar](gravatar.md) *(Deprecated)* - [GravatarImage](gravatar-image.md) - [HeadLink](head-link.md) - [HeadMeta](head-meta.md) diff --git a/docs/book/v2/view-scripts.md b/docs/book/v2/view-scripts.md index 43a7150ad..46ae13b32 100644 --- a/docs/book/v2/view-scripts.md +++ b/docs/book/v2/view-scripts.md @@ -50,6 +50,7 @@ introduction. ``` + > TIP: **IDE Auto-Completion in View Scripts** > The `Laminas\View\Renderer\PhpRenderer` class can be used to provide auto-completion for modern IDEs. > It defines the aliases of the view helpers in a DocBlock as `@method` tags. @@ -64,8 +65,10 @@ introduction. > * @var Laminas\View\Renderer\PhpRenderer $this > */ > ``` +> > The different Laminas components that contain view helpers provide `HelperTrait` traits with more aliases of the view helpers. > These traits can be chained with a pipe symbol (a.k.a. vertical bar) `|` as many as needed, depending on which view helpers from the different Laminas component are used and where the auto-completion is to be made. + ## Escaping Output From 67dbd66431c4a77d2442e27f89ea2165c193c0fd Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 17 Aug 2023 14:20:21 +0100 Subject: [PATCH 04/28] Insert a level 2 heading to avoid suppressing header-increment linting issues Signed-off-by: George Steel --- docs/book/v2/view-scripts.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/book/v2/view-scripts.md b/docs/book/v2/view-scripts.md index 46ae13b32..feacbaeef 100644 --- a/docs/book/v2/view-scripts.md +++ b/docs/book/v2/view-scripts.md @@ -5,6 +5,8 @@ requested view script and executes it "inside" the scope of the `PhpRenderer` instance. Therefore, in your view scripts, references to `$this` actually point to the `PhpRenderer` instance itself. +## Variables + Variables assigned to the view, either via a [View Model](quick-start.md#controllers-and-view-models), [Variables container](quick-start.md), or by passing an array of variables to `render()`, may be retrieved in three ways: @@ -50,7 +52,6 @@ introduction. ``` - > TIP: **IDE Auto-Completion in View Scripts** > The `Laminas\View\Renderer\PhpRenderer` class can be used to provide auto-completion for modern IDEs. > It defines the aliases of the view helpers in a DocBlock as `@method` tags. @@ -68,7 +69,6 @@ introduction. > > The different Laminas components that contain view helpers provide `HelperTrait` traits with more aliases of the view helpers. > These traits can be chained with a pipe symbol (a.k.a. vertical bar) `|` as many as needed, depending on which view helpers from the different Laminas component are used and where the auto-completion is to be made. - ## Escaping Output From b4bc929488b567903fcfaf7823b7d69be061ba77 Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 17 Aug 2023 14:14:50 +0100 Subject: [PATCH 05/28] Document template resolver deprecations Signed-off-by: George Steel --- docs/book/v2/migration/preparing-for-v3.md | 32 ++++++++++++++++++++++ mkdocs.yml | 2 ++ 2 files changed, 34 insertions(+) create mode 100644 docs/book/v2/migration/preparing-for-v3.md diff --git a/docs/book/v2/migration/preparing-for-v3.md b/docs/book/v2/migration/preparing-for-v3.md new file mode 100644 index 000000000..a4fb1440b --- /dev/null +++ b/docs/book/v2/migration/preparing-for-v3.md @@ -0,0 +1,32 @@ +# Preparing for Version 3 + +Version 3 will introduce a number of backwards incompatible changes. This document is intended to help you prepare for these changes. + +## Template Resolvers + +In version 2, template resolvers, which all implement the method `ResolverInterface::resolve()` have varying return types along with some undocumented or inconsistent behaviour, specifically concerned with error handling, for example, when a template cannot be found, or no templates have been configured. + +Version 3 will solve these issues by guaranteeing a string return type from `ResolverInterface::resolve()` or throw a `\Laminas\View\Exception\ExceptionInterface`. + +If you use template resolvers standalone, you can prepare for this change by wrapping existing code in a try/catch + +```php +// Before + +// Maybe null, false or string: +return $this->resolver->resolve($name, $this->renderer); + +// After +try { + return $this->resolver->resolve($name, $this->renderer); +} catch (\Laminas\View\Exception\ExceptionInterface $error) { + return null; // Or whatever else signals a missing template in your application +} +``` + +### Deprecations of undocumented behaviour + +`\Laminas\View\Resolver\TemplateMapResolver` allows runtime mutation of the template map with the `add($name, $path)` method. +This method has an undocumented feature where passing `null` to the `$path` parameter allows removal of an existing template providing that `$name` is a string. This feature is deprecated and will now issue an `E_USER_DEPRECATED` runtime error if used in this way. + +This deprecation can be safely ignored but in order to prepare for its removal in v3, you should ensure that you provide the complete map to the `TemplateMapResolver`'s constructor rather than changing it at runtime. diff --git a/mkdocs.yml b/mkdocs.yml index 3886f5029..85fb0cfc0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -38,6 +38,8 @@ nav: - 'Stand-Alone': v2/application-integration/stand-alone.md - Cookbook: - "Setting module-specific Layouts": v2/cookbook/setting-module-specific-layouts.md + - Migration: + - "Preparing for Version 3": v2/migration/preparing-for-v3.md site_name: laminas-view site_description: 'Flexible view layer supporting and providing multiple view layers, helpers, and more.' repo_url: 'https://github.com/laminas/laminas-view' From 62223deb3943ad0c2d5f3db919b6b427af2b145c Mon Sep 17 00:00:00 2001 From: George Steel Date: Thu, 17 Aug 2023 14:44:29 +0100 Subject: [PATCH 06/28] Document future removal of short open tag stream wrapper Signed-off-by: George Steel --- docs/book/v2/migration/preparing-for-v3.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/book/v2/migration/preparing-for-v3.md b/docs/book/v2/migration/preparing-for-v3.md index a4fb1440b..b0158cae8 100644 --- a/docs/book/v2/migration/preparing-for-v3.md +++ b/docs/book/v2/migration/preparing-for-v3.md @@ -30,3 +30,9 @@ try { This method has an undocumented feature where passing `null` to the `$path` parameter allows removal of an existing template providing that `$name` is a string. This feature is deprecated and will now issue an `E_USER_DEPRECATED` runtime error if used in this way. This deprecation can be safely ignored but in order to prepare for its removal in v3, you should ensure that you provide the complete map to the `TemplateMapResolver`'s constructor rather than changing it at runtime. + +### Deprecated Stream Wrappers for Short Open Tags + +In version 2, the `TemplatePathStack` template resolver automatically registers a stream wrapper for templates when the php.ini setting `short_open_tag` was turned off. The purpose of the stream wrapper was to convert template files using the short open tag `` to `` so that templates would continue to be processed in environments where short_open_tag was turned off. Since PHP 5.4.0, `` in environments where `short_open_tag` is **off**. To mitigate the impact of this removal, you should ensure that, where relevant, all of your templates use the full ` Date: Fri, 18 Aug 2023 00:48:57 +0000 Subject: [PATCH 07/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 65 ++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/composer.lock b/composer.lock index 74c75ded1..85b43771e 100644 --- a/composer.lock +++ b/composer.lock @@ -2477,16 +2477,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.35.0", + "version": "2.38.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "7a4a30f6c526a518ba9af50e037c2f97cb595958" + "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/7a4a30f6c526a518ba9af50e037c2f97cb595958", - "reference": "7a4a30f6c526a518ba9af50e037c2f97cb595958", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", + "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", "shasum": "" }, "require": { @@ -2557,7 +2557,7 @@ "type": "community_bridge" } ], - "time": "2023-07-10T07:32:01+00:00" + "time": "2023-08-14T07:19:58+00:00" }, { "name": "myclabs/deep-copy", @@ -2671,16 +2671,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -2721,9 +2721,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phar-io/manifest", @@ -3367,16 +3367,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.2.6", + "version": "10.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" + "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0dafb1175c366dd274eaa9a625e914451506bcd1", + "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1", "shasum": "" }, "require": { @@ -3401,7 +3401,7 @@ "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -3416,7 +3416,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.3-dev" } }, "autoload": { @@ -3448,7 +3448,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.2" }, "funding": [ { @@ -3464,7 +3464,7 @@ "type": "tidelift" } ], - "time": "2023-07-17T12:08:28+00:00" + "time": "2023-08-15T05:34:23+00:00" }, { "name": "psalm/plugin-phpunit", @@ -3798,16 +3798,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -3818,7 +3818,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -3862,7 +3862,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -3870,7 +3871,7 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", @@ -5492,16 +5493,16 @@ }, { "name": "vimeo/psalm", - "version": "5.14.0", + "version": "5.14.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b2942cefed8443002bd3f245c4cd0a54193716d8" + "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b2942cefed8443002bd3f245c4cd0a54193716d8", - "reference": "b2942cefed8443002bd3f245c4cd0a54193716d8", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", "shasum": "" }, "require": { @@ -5592,9 +5593,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.0" + "source": "https://github.com/vimeo/psalm/tree/5.14.1" }, - "time": "2023-07-30T20:18:56+00:00" + "time": "2023-08-01T05:16:55+00:00" }, { "name": "webimpress/coding-standard", From 7feb3f5203eac0a4cd88e3876b9998294a909532 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 00:15:26 +0000 Subject: [PATCH 08/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 85b43771e..1c0da7b62 100644 --- a/composer.lock +++ b/composer.lock @@ -5493,16 +5493,16 @@ }, { "name": "vimeo/psalm", - "version": "5.14.1", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -5530,6 +5530,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -5593,9 +5596,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.1" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-08-01T05:16:55+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webimpress/coding-standard", From c9cf1ab359bd5ec3297d5a155a77dcd2c2d5a265 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 22 Aug 2023 10:24:04 +0100 Subject: [PATCH 09/28] qa: CS and static analysis improvements to the template map generator script Signed-off-by: George Steel --- bin/templatemap_generator.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/bin/templatemap_generator.php b/bin/templatemap_generator.php index 86d8c36e3..0346f9e7f 100755 --- a/bin/templatemap_generator.php +++ b/bin/templatemap_generator.php @@ -1,7 +1,7 @@ #!/usr/bin/env php + * @param string $templatePath + * @return list */ function findTemplateFilesInTemplatePath($templatePath): array { @@ -138,7 +139,8 @@ function findTemplateFilesInTemplatePath($templatePath): array $files = []; foreach ($rii as $file) { - if (strtolower($file->getExtension()) != 'phtml') { + assert($file instanceof SplFileInfo); + if (strtolower($file->getExtension()) !== 'phtml') { continue; } From a7362972b7bc84b1dfd8d827dcf377c2eadd49e1 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 22 Aug 2023 10:24:46 +0100 Subject: [PATCH 10/28] qa: Add rudimentary test for the template map generator script Signed-off-by: George Steel --- test/bin/TemplateMapGeneratorTest.php | 60 +++++++++++++++++++++++++++ test/bin/templates/ignored.txt | 0 test/bin/templates/ignored/.gitkeep | 0 test/bin/templates/one.phtml | 0 test/bin/templates/two.phtml | 0 5 files changed, 60 insertions(+) create mode 100644 test/bin/TemplateMapGeneratorTest.php create mode 100644 test/bin/templates/ignored.txt create mode 100644 test/bin/templates/ignored/.gitkeep create mode 100644 test/bin/templates/one.phtml create mode 100644 test/bin/templates/two.phtml diff --git a/test/bin/TemplateMapGeneratorTest.php b/test/bin/TemplateMapGeneratorTest.php new file mode 100644 index 000000000..727c6ca1b --- /dev/null +++ b/test/bin/TemplateMapGeneratorTest.php @@ -0,0 +1,60 @@ +commandOutput('templates'); + + self::assertStringStartsWith(' __DIR__ . '/templates/one.phtml',", $output); + self::assertStringContainsString("'two' => __DIR__ . '/templates/two.phtml',", $output); + + self::assertStringNotContainsString('ignored.txt', $output); + self::assertStringNotContainsString('ignored', $output); + } + + public function testThatHelpTextWillBeOutputWhenRequested(): void + { + $output = $this->commandOutput('-h'); + self::assertStringContainsString('Generate template maps.', $output); + + $output = $this->commandOutput('--help'); + self::assertStringContainsString('Generate template maps.', $output); + } + + public function testThatTheMapGeneratorAcceptsAListOfFileNames(): void + { + $output = $this->commandOutput('. some/foo.txt bar.phtml'); + self::assertStringStartsWith(' __DIR__ . '/some/foo.txt',", $output); + self::assertStringContainsString("'bar' => __DIR__ . '/bar.phtml',", $output); + } +} diff --git a/test/bin/templates/ignored.txt b/test/bin/templates/ignored.txt new file mode 100644 index 000000000..e69de29bb diff --git a/test/bin/templates/ignored/.gitkeep b/test/bin/templates/ignored/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/bin/templates/one.phtml b/test/bin/templates/one.phtml new file mode 100644 index 000000000..e69de29bb diff --git a/test/bin/templates/two.phtml b/test/bin/templates/two.phtml new file mode 100644 index 000000000..e69de29bb From 62de65dfda7a4096b012e679297866ec00dc98b5 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 22 Aug 2023 10:25:13 +0100 Subject: [PATCH 11/28] qa: bump dev dependencies, refresh lock Signed-off-by: George Steel --- composer.json | 8 ++++---- composer.lock | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index a0c578c6c..329269f7c 100644 --- a/composer.json +++ b/composer.json @@ -37,9 +37,9 @@ "psr/container": "^1 || ^2" }, "require-dev": { - "laminas/laminas-authentication": "^2.13", + "laminas/laminas-authentication": "^2.15", "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-feed": "^2.20", + "laminas/laminas-feed": "^2.21", "laminas/laminas-filter": "^2.32", "laminas/laminas-http": "^2.18", "laminas/laminas-i18n": "^2.23", @@ -52,9 +52,9 @@ "laminas/laminas-permissions-acl": "^2.15", "laminas/laminas-router": "^3.11.1", "laminas/laminas-uri": "^2.10", - "phpunit/phpunit": "^10.1.3", + "phpunit/phpunit": "^10.3.2", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.12" + "vimeo/psalm": "^5.15" }, "conflict": { "container-interop/container-interop": "<1.2", diff --git a/composer.lock b/composer.lock index 1c0da7b62..345758a58 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d8c4880e9375fc4df0bb44fdb9436bf2", + "content-hash": "e06dd7d89c9aea20629a02cddefedab3", "packages": [ { "name": "laminas/laminas-escaper", From 600181b995a323e3301eae2f29cb1827e6bea1e6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 27 Aug 2023 00:38:28 +0000 Subject: [PATCH 12/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 345758a58..32c9dc3e6 100644 --- a/composer.lock +++ b/composer.lock @@ -4724,16 +4724,16 @@ }, { "name": "symfony/console", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { @@ -4794,7 +4794,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -4810,7 +4810,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:17:28+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/deprecation-contracts", From 6aa8db7d788a8f4bde195abac52b8850493185ca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 01:10:52 +0000 Subject: [PATCH 13/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 56 +++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/composer.lock b/composer.lock index 32c9dc3e6..60f4583f2 100644 --- a/composer.lock +++ b/composer.lock @@ -4944,16 +4944,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -4968,7 +4968,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5006,7 +5006,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -5022,20 +5022,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -5047,7 +5047,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5087,7 +5087,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -5103,20 +5103,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -5128,7 +5128,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5171,7 +5171,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -5187,20 +5187,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -5215,7 +5215,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5254,7 +5254,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -5270,7 +5270,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/service-contracts", From d3ecee75f725424732cf9704bc192afce0d22799 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 01:09:20 +0000 Subject: [PATCH 14/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 77 ++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/composer.lock b/composer.lock index 60f4583f2..a67c8842c 100644 --- a/composer.lock +++ b/composer.lock @@ -758,16 +758,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -817,9 +817,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -835,7 +835,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -3047,16 +3047,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.3", + "version": "10.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" + "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cd59bb34756a16ca8253ce9b2909039c227fff71", + "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71", "shasum": "" }, "require": { @@ -3113,7 +3113,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.4" }, "funding": [ { @@ -3121,20 +3121,20 @@ "type": "github" } ], - "time": "2023-07-26T13:45:28+00:00" + "time": "2023-08-31T14:04:38+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -3174,7 +3174,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -3182,7 +3182,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -3249,16 +3249,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -3296,7 +3296,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -3304,7 +3305,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -3875,16 +3876,16 @@ }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", "shasum": "" }, "require": { @@ -3920,7 +3921,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" }, "funding": [ { @@ -3928,7 +3930,7 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-08-31T09:55:53+00:00" }, { "name": "sebastian/diff", @@ -4202,16 +4204,16 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -4247,7 +4249,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -4255,7 +4258,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", From e73a844210890d044c6de8f4d152cd5452b56990 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 02:43:42 +0000 Subject: [PATCH 15/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.lock b/composer.lock index a67c8842c..741cf151d 100644 --- a/composer.lock +++ b/composer.lock @@ -5791,5 +5791,5 @@ "platform-overrides": { "php": "8.1.99" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From ac30feb9d3eb0202e78441db4a671f15076ccb63 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Sep 2023 01:54:35 +0000 Subject: [PATCH 16/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 741cf151d..66895725c 100644 --- a/composer.lock +++ b/composer.lock @@ -3368,16 +3368,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.2", + "version": "10.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1" + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0dafb1175c366dd274eaa9a625e914451506bcd1", - "reference": "0dafb1175c366dd274eaa9a625e914451506bcd1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", + "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", "shasum": "" }, "require": { @@ -3449,7 +3449,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.3" }, "funding": [ { @@ -3465,7 +3465,7 @@ "type": "tidelift" } ], - "time": "2023-08-15T05:34:23+00:00" + "time": "2023-09-05T04:34:51+00:00" }, { "name": "psalm/plugin-phpunit", From bfbf70b3eea38187201b71288dcd0dcb827e4feb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Sep 2023 01:25:30 +0000 Subject: [PATCH 17/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.lock b/composer.lock index 66895725c..26ac8f6db 100644 --- a/composer.lock +++ b/composer.lock @@ -2477,22 +2477,22 @@ }, { "name": "laminas/laminas-validator", - "version": "2.38.0", + "version": "2.39.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3" + "reference": "cec22e6f55fa68ec24e21c4f021fc1b2c3783c49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", - "reference": "5fafe1ec4cc23e4bb4dfe6b4cd96c28e1c7f48a3", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/cec22e6f55fa68ec24e21c4f021fc1b2c3783c49", + "reference": "cec22e6f55fa68ec24e21c4f021fc1b2c3783c49", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -2505,11 +2505,11 @@ "laminas/laminas-i18n": "^2.23", "laminas/laminas-session": "^2.16", "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^10.1.3", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", "psr/http-client": "^1.0.2", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.12" + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -2557,7 +2557,7 @@ "type": "community_bridge" } ], - "time": "2023-08-14T07:19:58+00:00" + "time": "2023-09-06T20:51:34+00:00" }, { "name": "myclabs/deep-copy", From a9773b4c6950659822df08b9508b0bbe8d838dc5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 02:38:12 +0000 Subject: [PATCH 18/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 26ac8f6db..fb752af2f 100644 --- a/composer.lock +++ b/composer.lock @@ -4065,16 +4065,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", "shasum": "" }, "require": { @@ -4130,7 +4130,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" }, "funding": [ { @@ -4138,7 +4139,7 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-08T04:46:58+00:00" }, { "name": "sebastian/global-state", From cceb39b3661f95ff9c4eac4ee6bda5a07f2ff235 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 00:28:04 +0000 Subject: [PATCH 19/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index fb752af2f..43cddc320 100644 --- a/composer.lock +++ b/composer.lock @@ -3047,16 +3047,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.4", + "version": "10.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71" + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/cd59bb34756a16ca8253ce9b2909039c227fff71", - "reference": "cd59bb34756a16ca8253ce9b2909039c227fff71", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1df504e42a88044c27a90136910f0b3fe9e91939", + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939", "shasum": "" }, "require": { @@ -3113,7 +3113,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.4" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.5" }, "funding": [ { @@ -3121,7 +3121,7 @@ "type": "github" } ], - "time": "2023-08-31T14:04:38+00:00" + "time": "2023-09-12T14:37:22+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3368,16 +3368,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.3", + "version": "10.3.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4" + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", - "reference": "241ed4dd0db1c096984e62d414c4e1ac8d5dbff4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8d59476f19115c9774b3b447f78131781c6c32b", + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b", "shasum": "" }, "require": { @@ -3391,7 +3391,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -3449,7 +3449,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.4" }, "funding": [ { @@ -3465,7 +3465,7 @@ "type": "tidelift" } ], - "time": "2023-09-05T04:34:51+00:00" + "time": "2023-09-12T14:42:28+00:00" }, { "name": "psalm/plugin-phpunit", From 83a29ac6c3ddb7e068382402ebacbb84e14cd98b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 01:23:21 +0000 Subject: [PATCH 20/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 70 +++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/composer.lock b/composer.lock index 43cddc320..397d45308 100644 --- a/composer.lock +++ b/composer.lock @@ -290,30 +290,30 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.17.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "dd35c868075bad80b6718959740913e178eb4274" + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/dd35c868075bad80b6718959740913e178eb4274", - "reference": "dd35c868075bad80b6718959740913e178eb4274", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.16", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8" + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -345,7 +345,7 @@ "type": "community_bridge" } ], - "time": "2023-03-20T13:51:37+00:00" + "time": "2023-09-19T10:15:21+00:00" }, { "name": "psr/container", @@ -1311,22 +1311,22 @@ }, { "name": "laminas/laminas-config", - "version": "3.8.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0" + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/46baad58d0b12cf98539e04334eff40a1fdfb9a0", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -1375,7 +1375,7 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:21:22+00:00" + "time": "2023-09-19T12:02:54+00:00" }, { "name": "laminas/laminas-feed", @@ -3047,16 +3047,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.5", + "version": "10.1.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1df504e42a88044c27a90136910f0b3fe9e91939" + "reference": "56f33548fe522c8d82da7ff3824b42829d324364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1df504e42a88044c27a90136910f0b3fe9e91939", - "reference": "1df504e42a88044c27a90136910f0b3fe9e91939", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", + "reference": "56f33548fe522c8d82da7ff3824b42829d324364", "shasum": "" }, "require": { @@ -3113,7 +3113,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.5" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" }, "funding": [ { @@ -3121,7 +3121,7 @@ "type": "github" } ], - "time": "2023-09-12T14:37:22+00:00" + "time": "2023-09-19T04:59:03+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3368,16 +3368,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.4", + "version": "10.3.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b8d59476f19115c9774b3b447f78131781c6c32b" + "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8d59476f19115c9774b3b447f78131781c6c32b", - "reference": "b8d59476f19115c9774b3b447f78131781c6c32b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503", + "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503", "shasum": "" }, "require": { @@ -3401,7 +3401,7 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", + "sebastian/exporter": "^5.1", "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", @@ -3449,7 +3449,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.5" }, "funding": [ { @@ -3465,7 +3465,7 @@ "type": "tidelift" } ], - "time": "2023-09-12T14:42:28+00:00" + "time": "2023-09-19T05:42:37+00:00" }, { "name": "psalm/plugin-phpunit", @@ -4065,16 +4065,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.1", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", - "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -4088,7 +4088,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -4131,7 +4131,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -4139,7 +4139,7 @@ "type": "github" } ], - "time": "2023-09-08T04:46:58+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", From 99f6d3973e57e806e93e85f956d39e36ce383d59 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 00:40:02 +0000 Subject: [PATCH 21/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index 397d45308..ac75c254b 100644 --- a/composer.lock +++ b/composer.lock @@ -3876,16 +3876,16 @@ }, { "name": "sebastian/complexity", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", - "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { @@ -3898,7 +3898,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -3922,7 +3922,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -3930,7 +3930,7 @@ "type": "github" } ], - "time": "2023-08-31T09:55:53+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", @@ -5361,16 +5361,16 @@ }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", "shasum": "" }, "require": { @@ -5427,7 +5427,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v6.3.5" }, "funding": [ { @@ -5443,7 +5443,7 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2023-09-18T10:38:32+00:00" }, { "name": "theseer/tokenizer", From d2f812045d768b430fbd54f31ece6456edc7d088 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 01:28:47 +0000 Subject: [PATCH 22/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index ac75c254b..e4581b0d8 100644 --- a/composer.lock +++ b/composer.lock @@ -3047,16 +3047,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.6", + "version": "10.1.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "56f33548fe522c8d82da7ff3824b42829d324364" + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", - "reference": "56f33548fe522c8d82da7ff3824b42829d324364", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", "shasum": "" }, "require": { @@ -3113,7 +3113,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" }, "funding": [ { @@ -3121,7 +3121,7 @@ "type": "github" } ], - "time": "2023-09-19T04:59:03+00:00" + "time": "2023-10-04T15:34:17+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3368,16 +3368,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.3.5", + "version": "10.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503" + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503", - "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/62bd7af13d282deeb95650077d28ba3600ca321c", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c", "shasum": "" }, "require": { @@ -3417,7 +3417,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.3-dev" + "dev-main": "10.4-dev" } }, "autoload": { @@ -3449,7 +3449,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.1" }, "funding": [ { @@ -3465,7 +3465,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T05:42:37+00:00" + "time": "2023-10-08T05:01:11+00:00" }, { "name": "psalm/plugin-phpunit", From 36a0e8dcc6e86845f2ef9d9a6b1c444f45cab765 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 00:27:21 +0000 Subject: [PATCH 23/28] Lock file maintenance Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- composer.lock | 91 +++++++++++++++++++++++++-------------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/composer.lock b/composer.lock index e4581b0d8..be7ee73f8 100644 --- a/composer.lock +++ b/composer.lock @@ -8,33 +8,33 @@ "packages": [ { "name": "laminas/laminas-escaper", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.4.0", + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.22.0" + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -66,24 +66,24 @@ "type": "community_bridge" } ], - "time": "2022-10-10T10:11:09+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.10.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba" + "reference": "9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd", + "reference": "9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "container-interop/container-interop": "<1.2", @@ -134,7 +134,7 @@ "type": "community_bridge" } ], - "time": "2023-01-11T19:52:45+00:00" + "time": "2023-10-10T08:29:58+00:00" }, { "name": "laminas/laminas-json", @@ -199,21 +199,21 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.21.0", + "version": "3.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" + "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", + "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -234,10 +234,9 @@ "laminas/laminas-code": "^4.10.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "laminas/laminas-dependency-plugin": "^2.2", "mikey179/vfsstream": "^1.6.11", "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.17", + "phpunit/phpunit": "^10.4", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.8.0" }, @@ -286,7 +285,7 @@ "type": "community_bridge" } ], - "time": "2023-05-14T12:24:54+00:00" + "time": "2023-10-10T21:23:36+00:00" }, { "name": "laminas/laminas-stdlib", @@ -687,16 +686,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -738,7 +737,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -754,7 +753,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -1379,16 +1378,16 @@ }, { "name": "laminas/laminas-feed", - "version": "2.21.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab" + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/52918789a417bc292ccd6fbb4b91bd78a65d50ab", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/669792b819fca7274698147ad7a2ecc1b0a9b141", + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141", "shasum": "" }, "require": { @@ -1396,24 +1395,24 @@ "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.13.2 || ^3.10.1", + "laminas/laminas-cache": "^2.13.2 || ^3.11", "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-db": "^2.18", "laminas/laminas-http": "^2.18", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-validator": "^2.30.1", - "phpunit/phpunit": "^10.2.6", + "laminas/laminas-validator": "^2.38", + "phpunit/phpunit": "^10.3.1", "psalm/plugin-phpunit": "^0.18.4", "psr/http-message": "^2.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^5.14.1" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -1455,7 +1454,7 @@ "type": "community_bridge" } ], - "time": "2023-07-24T09:21:16+00:00" + "time": "2023-10-11T20:16:37+00:00" }, { "name": "laminas/laminas-filter", @@ -1602,16 +1601,16 @@ }, { "name": "laminas/laminas-i18n", - "version": "2.23.0", + "version": "2.23.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2" + "reference": "970a2775732d56b89434ec283577096887e68167" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/bb844a1141bb6e65d8889f5a08383f761a8270b2", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/970a2775732d56b89434ec283577096887e68167", + "reference": "970a2775732d56b89434ec283577096887e68167", "shasum": "" }, "require": { @@ -1683,7 +1682,7 @@ "type": "community_bridge" } ], - "time": "2023-05-16T23:22:24+00:00" + "time": "2023-10-09T12:00:55+00:00" }, { "name": "laminas/laminas-loader", From b3bbe365cc95fd406ceb7e1215578dbbebaa9c42 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 17 Oct 2023 16:13:17 +0100 Subject: [PATCH 24/28] Improve code blocks describing proposed API changes to template resolvers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Frank Brückner Signed-off-by: George Steel --- docs/book/v2/migration/preparing-for-v3.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/book/v2/migration/preparing-for-v3.md b/docs/book/v2/migration/preparing-for-v3.md index b0158cae8..74170fe7b 100644 --- a/docs/book/v2/migration/preparing-for-v3.md +++ b/docs/book/v2/migration/preparing-for-v3.md @@ -8,19 +8,23 @@ In version 2, template resolvers, which all implement the method `ResolverInterf Version 3 will solve these issues by guaranteeing a string return type from `ResolverInterface::resolve()` or throw a `\Laminas\View\Exception\ExceptionInterface`. -If you use template resolvers standalone, you can prepare for this change by wrapping existing code in a try/catch +#### Before -```php -// Before +Before version 3 the return type can `null`, `false` or `string`: -// Maybe null, false or string: +```php return $this->resolver->resolve($name, $this->renderer); +``` -// After +#### After + +If the template resolvers is used as standalone, use a `try`-`catch` block to create a custom signal for a missing template in an application: + +``` try { return $this->resolver->resolve($name, $this->renderer); } catch (\Laminas\View\Exception\ExceptionInterface $error) { - return null; // Or whatever else signals a missing template in your application + return null; // custom return type } ``` From fd02d9bd6b80d2be8d1cd105a599555d05b748c6 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 17 Oct 2023 16:19:17 +0100 Subject: [PATCH 25/28] docs: Improve document outline and structure Signed-off-by: George Steel --- docs/book/v2/migration/preparing-for-v3.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/book/v2/migration/preparing-for-v3.md b/docs/book/v2/migration/preparing-for-v3.md index 74170fe7b..6787e769c 100644 --- a/docs/book/v2/migration/preparing-for-v3.md +++ b/docs/book/v2/migration/preparing-for-v3.md @@ -2,7 +2,9 @@ Version 3 will introduce a number of backwards incompatible changes. This document is intended to help you prepare for these changes. -## Template Resolvers +## Signature Changes + +### Template Resolvers In version 2, template resolvers, which all implement the method `ResolverInterface::resolve()` have varying return types along with some undocumented or inconsistent behaviour, specifically concerned with error handling, for example, when a template cannot be found, or no templates have been configured. @@ -18,9 +20,9 @@ return $this->resolver->resolve($name, $this->renderer); #### After -If the template resolvers is used as standalone, use a `try`-`catch` block to create a custom signal for a missing template in an application: +If a template resolver is used as standalone, use a `try`-`catch` block to create a custom signal for a missing template in an application: -``` +```php try { return $this->resolver->resolve($name, $this->renderer); } catch (\Laminas\View\Exception\ExceptionInterface $error) { @@ -28,7 +30,9 @@ try { } ``` -### Deprecations of undocumented behaviour +## Deprecations + +### Undocumented Behaviour `\Laminas\View\Resolver\TemplateMapResolver` allows runtime mutation of the template map with the `add($name, $path)` method. This method has an undocumented feature where passing `null` to the `$path` parameter allows removal of an existing template providing that `$name` is a string. This feature is deprecated and will now issue an `E_USER_DEPRECATED` runtime error if used in this way. From 46c379a231d61be1ddf57e738f261410be561936 Mon Sep 17 00:00:00 2001 From: func0der <529819+func0der@users.noreply.github.com> Date: Tue, 17 Oct 2023 22:32:20 +0200 Subject: [PATCH 26/28] Add return type hint to ViewModel::getIterator() This is to satisfy static code analytic tools like PHPStan and Psalm. Resolves #73 Signed-off-by: func0der <529819+func0der@users.noreply.github.com> --- src/Model/ViewModel.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Model/ViewModel.php b/src/Model/ViewModel.php index 759e8b981..a33ca643a 100644 --- a/src/Model/ViewModel.php +++ b/src/Model/ViewModel.php @@ -32,6 +32,7 @@ class ViewModel implements ModelInterface, ClearableModelInterface, RetrievableC * Child models * * @var array + * @psalm-type list */ protected $children = []; @@ -508,7 +509,7 @@ public function count() /** * Get iterator of children * - * @return ArrayIterator + * @return Traversable */ #[ReturnTypeWillChange] public function getIterator() From b9bbb7f7bc1b4f3de6d90f0e2d84063d1ab679a6 Mon Sep 17 00:00:00 2001 From: George Steel Date: Tue, 17 Oct 2023 23:11:35 +0100 Subject: [PATCH 27/28] qa: Minor type inference improvements to ViewModel and ModelInterface Signed-off-by: George Steel --- psalm-baseline.xml | 72 +--------------------- src/Model/ModelInterface.php | 4 +- src/Model/RetrievableChildrenInterface.php | 2 +- src/Model/ViewModel.php | 12 ++-- 4 files changed, 11 insertions(+), 79 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 799da0528..8e1e77db4 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,23 +1,5 @@ - - - - $templatePath - - - $file - getExtension()]]> - $templatePath - - - $file - $files[] - - - getExtension - getPathname - - + $closingBracket @@ -1184,18 +1166,12 @@ $viewModelHelper - $childModel viewModelHelper]]> ViewModel - false|Model - - captureTo - - $childModel viewModelHelper]]> @@ -1441,11 +1417,6 @@ $captureTo - - - IteratorAggregate - - gettype($variables) @@ -1457,29 +1428,9 @@ $key - - $children[] - - $child - $children - $children[] $value - - array - - - captureTo - getChildrenByCaptureTo - - - getChildrenByCaptureTo($capture)]]> - - - $children - $children - $variables[$name] @@ -1501,11 +1452,7 @@ $values - - $child - - $child $setting $value @@ -1542,23 +1489,14 @@ $jsonpCallback - $child $nameOrModel $child - - $values[$captureTo] - - $captureTo - $child $value - - captureTo - $childValues $children @@ -1858,17 +1796,9 @@ $request $response - - $child - - $child $oldResult - - setOption - terminate - $oldResult diff --git a/src/Model/ModelInterface.php b/src/Model/ModelInterface.php index c9cb63e08..c1bcbafbf 100644 --- a/src/Model/ModelInterface.php +++ b/src/Model/ModelInterface.php @@ -16,6 +16,8 @@ * to the model. * * Extends "IteratorAggregate"; should allow iterating over children. + * + * @extends IteratorAggregate */ interface ModelInterface extends Countable, IteratorAggregate { @@ -105,7 +107,7 @@ public function addChild(ModelInterface $child, $captureTo = null, $append = fal * * Return specifies an array, but may be any iterable object. * - * @return array + * @return list */ public function getChildren(); diff --git a/src/Model/RetrievableChildrenInterface.php b/src/Model/RetrievableChildrenInterface.php index 88e5ad5e9..cf328c804 100644 --- a/src/Model/RetrievableChildrenInterface.php +++ b/src/Model/RetrievableChildrenInterface.php @@ -16,7 +16,7 @@ interface RetrievableChildrenInterface * * @param string $capture * @param bool $recursive search recursive through children, default true - * @return array + * @return list */ public function getChildrenByCaptureTo($capture, $recursive = true); } diff --git a/src/Model/ViewModel.php b/src/Model/ViewModel.php index a33ca643a..2067b2cc7 100644 --- a/src/Model/ViewModel.php +++ b/src/Model/ViewModel.php @@ -13,6 +13,7 @@ use Traversable; use function array_key_exists; +use function array_merge; use function count; use function gettype; use function is_array; @@ -31,8 +32,7 @@ class ViewModel implements ModelInterface, ClearableModelInterface, RetrievableC /** * Child models * - * @var array - * @psalm-type list + * @var list */ protected $children = []; @@ -377,7 +377,7 @@ public function addChild(ModelInterface $child, $captureTo = null, $append = nul * * Return specifies an array, but may be any iterable object. * - * @return array + * @return list */ public function getChildren() { @@ -410,15 +410,15 @@ public function clearChildren() * * @param string $capture * @param bool $recursive search recursive through children, default true - * @return array + * @return list */ public function getChildrenByCaptureTo($capture, $recursive = true) { $children = []; foreach ($this->children as $child) { - if ($recursive === true) { - $children += $child->getChildrenByCaptureTo($capture); + if ($recursive === true && $child instanceof RetrievableChildrenInterface) { + $children = array_merge($children, $child->getChildrenByCaptureTo($capture)); } if ($child->captureTo() === $capture) { From f54c7e749ece479862e6b4559b3afe6dce76d2e6 Mon Sep 17 00:00:00 2001 From: George Steel Date: Wed, 18 Oct 2023 09:35:37 +0100 Subject: [PATCH 28/28] Refresh lock and reset baseline post merge-up Signed-off-by: George Steel --- composer.lock | 389 +++++++++++++++++++++++---------------------- psalm-baseline.xml | 183 +++++++-------------- 2 files changed, 252 insertions(+), 320 deletions(-) diff --git a/composer.lock b/composer.lock index 01d04bac4..fa7c47941 100644 --- a/composer.lock +++ b/composer.lock @@ -4,37 +4,37 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6f4f1dcd9aabd89a90c6f0ad6d25cc20", + "content-hash": "b36d4ec2d2fe5e0e88fd8191ea7f6f17", "packages": [ { "name": "laminas/laminas-escaper", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.4.0", + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.22.0" + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -66,24 +66,24 @@ "type": "community_bridge" } ], - "time": "2022-10-10T10:11:09+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.10.0", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba" + "reference": "9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", - "reference": "5a5114ab2d3fa4424faa46a2fb0a4e49a61f6eba", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd", + "reference": "9cfa79ce247c567f05ce4b7c975c6bdf9698c5dd", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "container-interop/container-interop": "<1.2", @@ -134,7 +134,7 @@ "type": "community_bridge" } ], - "time": "2023-01-11T19:52:45+00:00" + "time": "2023-10-10T08:29:58+00:00" }, { "name": "laminas/laminas-json", @@ -199,21 +199,21 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.21.0", + "version": "3.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" + "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", - "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", + "reference": "b4f547078af2ac3173cbe4a64e8fdfbd626c77ae", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -234,10 +234,9 @@ "laminas/laminas-code": "^4.10.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "laminas/laminas-dependency-plugin": "^2.2", "mikey179/vfsstream": "^1.6.11", "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.17", + "phpunit/phpunit": "^10.4", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.8.0" }, @@ -286,34 +285,34 @@ "type": "community_bridge" } ], - "time": "2023-05-14T12:24:54+00:00" + "time": "2023-10-10T21:23:36+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.17.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "dd35c868075bad80b6718959740913e178eb4274" + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/dd35c868075bad80b6718959740913e178eb4274", - "reference": "dd35c868075bad80b6718959740913e178eb4274", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.16", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8" + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -345,7 +344,7 @@ "type": "community_bridge" } ], - "time": "2023-03-20T13:51:37+00:00" + "time": "2023-09-19T10:15:21+00:00" }, { "name": "psr/container", @@ -687,16 +686,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -738,7 +737,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -754,20 +753,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -817,9 +816,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -835,7 +834,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -1311,22 +1310,22 @@ }, { "name": "laminas/laminas-config", - "version": "3.8.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config.git", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0" + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config/zipball/46baad58d0b12cf98539e04334eff40a1fdfb9a0", - "reference": "46baad58d0b12cf98539e04334eff40a1fdfb9a0", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/e53717277f6c22b1c697a46473b9a5ec9a438efa", + "reference": "e53717277f6c22b1c697a46473b9a5ec9a438efa", "shasum": "" }, "require": { "ext-json": "*", "laminas/laminas-stdlib": "^3.6", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "psr/container": "^1.0" }, "conflict": { @@ -1375,20 +1374,20 @@ "type": "community_bridge" } ], - "time": "2022-10-16T14:21:22+00:00" + "time": "2023-09-19T12:02:54+00:00" }, { "name": "laminas/laminas-feed", - "version": "2.21.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab" + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/52918789a417bc292ccd6fbb4b91bd78a65d50ab", - "reference": "52918789a417bc292ccd6fbb4b91bd78a65d50ab", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/669792b819fca7274698147ad7a2ecc1b0a9b141", + "reference": "669792b819fca7274698147ad7a2ecc1b0a9b141", "shasum": "" }, "require": { @@ -1396,24 +1395,24 @@ "ext-libxml": "*", "laminas/laminas-escaper": "^2.9", "laminas/laminas-stdlib": "^3.6", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.3", "zendframework/zend-feed": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.13.2 || ^3.10.1", + "laminas/laminas-cache": "^2.13.2 || ^3.11", "laminas/laminas-cache-storage-adapter-memory": "^1.1.0 || ^2.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-db": "^2.18", "laminas/laminas-http": "^2.18", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-validator": "^2.30.1", - "phpunit/phpunit": "^10.2.6", + "laminas/laminas-validator": "^2.38", + "phpunit/phpunit": "^10.3.1", "psalm/plugin-phpunit": "^0.18.4", "psr/http-message": "^2.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^5.14.1" }, "suggest": { "laminas/laminas-cache": "Laminas\\Cache component, for optionally caching feeds between requests", @@ -1455,7 +1454,7 @@ "type": "community_bridge" } ], - "time": "2023-07-24T09:21:16+00:00" + "time": "2023-10-11T20:16:37+00:00" }, { "name": "laminas/laminas-filter", @@ -1602,16 +1601,16 @@ }, { "name": "laminas/laminas-i18n", - "version": "2.23.0", + "version": "2.23.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2" + "reference": "970a2775732d56b89434ec283577096887e68167" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/bb844a1141bb6e65d8889f5a08383f761a8270b2", - "reference": "bb844a1141bb6e65d8889f5a08383f761a8270b2", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/970a2775732d56b89434ec283577096887e68167", + "reference": "970a2775732d56b89434ec283577096887e68167", "shasum": "" }, "require": { @@ -1683,7 +1682,7 @@ "type": "community_bridge" } ], - "time": "2023-05-16T23:22:24+00:00" + "time": "2023-10-09T12:00:55+00:00" }, { "name": "laminas/laminas-loader", @@ -2134,20 +2133,20 @@ }, { "name": "laminas/laminas-permissions-acl", - "version": "2.15.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-permissions-acl.git", - "reference": "ea9f6643a624b3e847f7d637eb828498654f492e" + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/ea9f6643a624b3e847f7d637eb828498654f492e", - "reference": "ea9f6643a624b3e847f7d637eb828498654f492e", + "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/9f85ee3b1940cd5a1c4151ca16fdb738c162480b", + "reference": "9f85ee3b1940cd5a1c4151ca16fdb738c162480b", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.0", @@ -2194,7 +2193,7 @@ "type": "community_bridge" } ], - "time": "2023-05-29T19:28:02+00:00" + "time": "2023-10-18T07:50:34+00:00" }, { "name": "laminas/laminas-router", @@ -2327,22 +2326,22 @@ }, { "name": "laminas/laminas-validator", - "version": "2.35.0", + "version": "2.39.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "7a4a30f6c526a518ba9af50e037c2f97cb595958" + "reference": "cec22e6f55fa68ec24e21c4f021fc1b2c3783c49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/7a4a30f6c526a518ba9af50e037c2f97cb595958", - "reference": "7a4a30f6c526a518ba9af50e037c2f97cb595958", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/cec22e6f55fa68ec24e21c4f021fc1b2c3783c49", + "reference": "cec22e6f55fa68ec24e21c4f021fc1b2c3783c49", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -2355,11 +2354,11 @@ "laminas/laminas-i18n": "^2.23", "laminas/laminas-session": "^2.16", "laminas/laminas-uri": "^2.10.0", - "phpunit/phpunit": "^10.1.3", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", "psr/http-client": "^1.0.2", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.12" + "vimeo/psalm": "^5.15" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -2407,7 +2406,7 @@ "type": "community_bridge" } ], - "time": "2023-07-10T07:32:01+00:00" + "time": "2023-09-06T20:51:34+00:00" }, { "name": "myclabs/deep-copy", @@ -2521,16 +2520,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -2571,9 +2570,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phar-io/manifest", @@ -2897,16 +2896,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.3", + "version": "10.1.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d" + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be1fe461fdc917de2a29a452ccf2657d325b443d", - "reference": "be1fe461fdc917de2a29a452ccf2657d325b443d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", + "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", "shasum": "" }, "require": { @@ -2963,7 +2962,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.3" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" }, "funding": [ { @@ -2971,20 +2970,20 @@ "type": "github" } ], - "time": "2023-07-26T13:45:28+00:00" + "time": "2023-10-04T15:34:17+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -3024,7 +3023,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -3032,7 +3031,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -3099,16 +3098,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -3146,7 +3145,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -3154,7 +3154,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -3217,16 +3217,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.2.6", + "version": "10.4.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd" + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1c17815c129f133f3019cc18e8d0c8622e6d9bcd", - "reference": "1c17815c129f133f3019cc18e8d0c8622e6d9bcd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/62bd7af13d282deeb95650077d28ba3600ca321c", + "reference": "62bd7af13d282deeb95650077d28ba3600ca321c", "shasum": "" }, "require": { @@ -3240,7 +3240,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -3250,8 +3250,8 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -3266,7 +3266,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.4-dev" } }, "autoload": { @@ -3298,7 +3298,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.1" }, "funding": [ { @@ -3314,7 +3314,7 @@ "type": "tidelift" } ], - "time": "2023-07-17T12:08:28+00:00" + "time": "2023-10-08T05:01:11+00:00" }, { "name": "psalm/plugin-phpunit", @@ -3648,16 +3648,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -3668,7 +3668,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -3712,7 +3712,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -3720,20 +3721,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { @@ -3746,7 +3747,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -3769,7 +3770,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -3777,7 +3779,7 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", @@ -3912,16 +3914,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -3935,7 +3937,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -3977,7 +3979,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -3985,7 +3988,7 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", @@ -4051,16 +4054,16 @@ }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -4096,7 +4099,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -4104,7 +4108,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", @@ -4573,16 +4577,16 @@ }, { "name": "symfony/console", - "version": "v6.3.2", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { @@ -4643,7 +4647,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -4659,7 +4663,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:17:28+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4793,16 +4797,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -4817,7 +4821,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4855,7 +4859,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -4871,20 +4875,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -4896,7 +4900,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4936,7 +4940,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -4952,20 +4956,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -4977,7 +4981,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5020,7 +5024,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -5036,20 +5040,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -5064,7 +5068,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5103,7 +5107,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -5119,7 +5123,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/service-contracts", @@ -5206,16 +5210,16 @@ }, { "name": "symfony/string", - "version": "v6.3.2", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", "shasum": "" }, "require": { @@ -5272,7 +5276,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" + "source": "https://github.com/symfony/string/tree/v6.3.5" }, "funding": [ { @@ -5288,7 +5292,7 @@ "type": "tidelift" } ], - "time": "2023-07-05T08:41:27+00:00" + "time": "2023-09-18T10:38:32+00:00" }, { "name": "theseer/tokenizer", @@ -5342,16 +5346,16 @@ }, { "name": "vimeo/psalm", - "version": "5.14.0", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b2942cefed8443002bd3f245c4cd0a54193716d8" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b2942cefed8443002bd3f245c4cd0a54193716d8", - "reference": "b2942cefed8443002bd3f245c4cd0a54193716d8", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -5379,6 +5383,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -5442,9 +5449,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.0" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-07-30T20:18:56+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webimpress/coding-standard", @@ -5634,5 +5641,5 @@ "platform-overrides": { "php": "8.1.99" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 54e709c03..1c86d84ee 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,23 +1,5 @@ - - - - $templatePath - - - $file - getExtension()]]> - $templatePath - - - $file - $files[] - - - getExtension - getPathname - - + $closingBracket @@ -30,8 +12,6 @@ $closingBracket $closingBracket $closingBracket - $closingBracket - $closingBracket $val @@ -1086,18 +1066,12 @@ $viewModelHelper - $childModel viewModelHelper]]> ViewModel - false|Model - - captureTo - - $childModel viewModelHelper]]> @@ -1284,11 +1258,6 @@ $captureTo - - - IteratorAggregate - - gettype($variables) @@ -1300,29 +1269,9 @@ $key - - $children[] - - $child - $children - $children[] $value - - array - - - captureTo - getChildrenByCaptureTo - - - getChildrenByCaptureTo($capture)]]> - - - $children - $children - $variables[$name] @@ -1359,23 +1308,14 @@ $jsonpCallback - $child $nameOrModel $child - - $values[$captureTo] - - $captureTo - $child $value - - captureTo - $childValues $children @@ -1398,9 +1338,15 @@ gettype($helpers) gettype($variables) + + __templateResolver->resolve($name, $this)]]> + $values + + string|Resolver + $__vars __template]]> @@ -1437,7 +1383,6 @@ string - string|Resolver getArrayCopy @@ -1448,7 +1393,6 @@ __filterChain->filter($this->__content)]]> - __templateResolver->resolve($name, $this)]]> __templateResolver]]> @@ -1484,57 +1428,48 @@ - - IteratorAggregate - - - $resolver - $resource + + lastLookupFailure]]> + lastLookupFailure]]> lastLookupFailure]]> lastLookupFailure]]> lastSuccessfulResolver]]> - - - false|string - - - resolve - - - $resource - - - null - - - $lastSuccessfulResolver - + lastSuccessfulResolver]]> + lastSuccessfulResolver]]> + - - $prefix - - - $result - + + resolve + + + (string) $prefix + - - - is_string($nameOrMap) + is_iterable($map) + is_iterable($map) - - IteratorAggregate - - - false|string - - - map[$name]]]> - + + map, $map)]]> + + + + is_string($path) + + + static::FAILURE_NOT_FOUND + static::FAILURE_NO_PATHS + + + lastLookupFailure]]> + lastLookupFailure]]> + lastLookupFailure]]> + lastLookupFailure]]> + is_string($path) @@ -1543,21 +1478,11 @@ false - $value - $value - $value - $value + + + - - lastLookupFailure]]> - lastLookupFailure]]> - $value - - - paths]]> - - (bool) $flag (bool) $flag (string) $defaultSuffix @@ -1652,17 +1577,9 @@ $request $response - - $child - - $child $oldResult - - setOption - terminate - $oldResult @@ -2553,11 +2470,19 @@ $model - - - $test - $test - + + + assertNull + + + + + TemplatePathStack::FAILURE_NOT_FOUND + TemplatePathStack::FAILURE_NO_PATHS + + + +