From 1f9ffc0e954c6f73c25accbe6a689deff0181621 Mon Sep 17 00:00:00 2001 From: mhsdesign <85400359+mhsdesign@users.noreply.github.com> Date: Tue, 18 Jun 2024 20:39:21 +0200 Subject: [PATCH] FEATURE: Introduce phpstan with level 8 --- .../Fusion/XmlSitemapUrlsImplementation.php | 35 ++++++++++++------- composer.json | 3 ++ phpstan.neon.dist | 4 +++ 3 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 phpstan.neon.dist diff --git a/Classes/Fusion/XmlSitemapUrlsImplementation.php b/Classes/Fusion/XmlSitemapUrlsImplementation.php index a1588da..f558cc6 100644 --- a/Classes/Fusion/XmlSitemapUrlsImplementation.php +++ b/Classes/Fusion/XmlSitemapUrlsImplementation.php @@ -25,8 +25,16 @@ use Neos\Flow\Persistence\Doctrine\PersistenceManager; use Neos\Fusion\FusionObjects\AbstractFusionObject; use Neos\Media\Domain\Model\ImageInterface; -use Neos\Utility\Exception\PropertyNotAccessibleException; +/** + * @phpstan-type SitemapUrlItem array{ + * node: Node, + * lastModificationDateTime: \DateTimeImmutable, + * priority: string, + * images: array, + * changeFrequency?: true + * } + */ class XmlSitemapUrlsImplementation extends AbstractFusionObject { #[Flow\Inject] @@ -36,7 +44,7 @@ class XmlSitemapUrlsImplementation extends AbstractFusionObject protected PersistenceManager $persistenceManager; /** - * @var array> + * @var array> */ protected array $assetPropertiesByNodeType = []; @@ -47,7 +55,7 @@ class XmlSitemapUrlsImplementation extends AbstractFusionObject protected ?Node $startingPoint = null; /** - * @var array|null + * @var list|null */ protected ?array $items = null; @@ -84,8 +92,7 @@ public function getStartingPoint(): Node /** * Evaluate this Fusion object and return the result * - * @return array - * @throws PropertyNotAccessibleException + * @return list */ public function evaluate(): array { @@ -105,7 +112,9 @@ public function evaluate(): array $startingPoint->aggregateId, FindSubtreeFilter::create(nodeTypes: NodeTypeCriteria::create($nodeTypeNames, NodeTypeNames::createEmpty())) ); - + if (!$subtree) { + throw new \RuntimeException(sprintf('The "startingPoint" Node with identifier "%s" doesnt exist anymore.', $startingPoint->aggregateId->value), 1718735861); + } $this->collectItems($items, $subtree); $this->items = $items; } @@ -113,6 +122,9 @@ public function evaluate(): array return $this->items; } + /** + * @return list + */ private function getAssetPropertiesForNodeType(NodeType $nodeType): array { if (!array_key_exists($nodeType->name->value, $this->assetPropertiesByNodeType)) { @@ -136,7 +148,7 @@ private function getAssetPropertiesForNodeType(NodeType $nodeType): array } /** - * @throws PropertyNotAccessibleException + * @param list $items */ protected function collectItems(array &$items, Subtree $subtree): void { @@ -171,7 +183,9 @@ protected function collectItems(array &$items, Subtree $subtree): void $node->aggregateId, FindSubtreeFilter::create(nodeTypes: NodeTypeCriteria::create($nodeTypeNames, NodeTypeNames::createEmpty())) ); - + if (!$contentSubtree) { + throw new \RuntimeException(sprintf('The Node with identifier "%s" doesnt exist anymore.', $node->aggregateId->value), 1718735861); + } $this->resolveImages($contentSubtree, $item, $nodeTypeManager); } @@ -184,10 +198,7 @@ protected function collectItems(array &$items, Subtree $subtree): void } /** - * @param Subtree $subtree - * @param array & $item - * @return void - * @throws PropertyNotAccessibleException + * @param SitemapUrlItem $item */ protected function resolveImages(Subtree $subtree, array &$item, NodeTypeManager $nodeTypeManager): void { diff --git a/composer.json b/composer.json index ca8513c..c1f084e 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,9 @@ "neos/neos": "^9.0", "neos/fusion-afx": "^9.0" }, + "scripts": { + "lint:phpstan": "../../../bin/phpstan analyse" + }, "autoload": { "psr-4": { "Neos\\Seo\\": "Classes" diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..d0cf7bd --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,4 @@ +parameters: + level: 8 + paths: + - Classes