From 51eb04e2cea5ceaa5162259c6fa7b2647c29bd38 Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 14:27:49 +1300 Subject: [PATCH 1/8] Make code change after dependency update --- Annotations/AnnotationGenerator.php | 34 +++++++++++++++-------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/Annotations/AnnotationGenerator.php b/Annotations/AnnotationGenerator.php index f4e8f89..2ff84ad 100644 --- a/Annotations/AnnotationGenerator.php +++ b/Annotations/AnnotationGenerator.php @@ -11,6 +11,13 @@ namespace Piwik\Plugins\OpenApiDocs\Annotations; +use Matomo\Dependencies\OpenApiDocs\phpDocumentor\Reflection\DocBlock\Tags\Param; +use Matomo\Dependencies\OpenApiDocs\phpDocumentor\Reflection\DocBlockFactory; +use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Lexer\Lexer; +use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\ConstExprParser; +use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\PhpDocParser; +use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\TokenIterator; +use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\TypeParser; use Piwik\API\DocumentationGenerator; use Piwik\API\NoDefaultValue; use Piwik\API\Proxy; @@ -24,11 +31,6 @@ use Piwik\UrlHelper; use Piwik\Validators\BaseValidator; use Piwik\Validators\NotEmpty; -use PHPStan\PhpDocParser\Lexer\Lexer; -use PHPStan\PhpDocParser\Parser\PhpDocParser; -use PHPStan\PhpDocParser\Parser\TypeParser; -use PHPStan\PhpDocParser\Parser\ConstExprParser; -use PHPStan\PhpDocParser\Parser\TokenIterator; class AnnotationGenerator { @@ -282,21 +284,21 @@ protected function buildAnnotationForMethod(array $rules, string $pluginName, \R */ public function getParamInfoFromDocBlock(string $docBlock): array { - $lexer = new Lexer(); - $tokens = $lexer->tokenize($docBlock); - $expressionParser = new ConstExprParser(); - $parser = new PhpDocParser(new TypeParser($expressionParser), $expressionParser); - $node = $parser->parse(new TokenIterator($tokens)); + $factory = DocBlockFactory::createInstance(); + $docBlockObject = $factory->create($docBlock); $params = []; - foreach ($node->getParamTagValues() as $param) { - $name = ltrim($param->parameterName, '$'); + foreach ($docBlockObject->getTagsByName('param') as $param) { + if (!($param instanceof Param)) { + continue; + } + $name = ltrim($param->getVariableName(), '$'); $params[$name] = [ - 'type' => (string)$param->type, + 'type' => (string) $param->getType(), // Normalise the description. E.g. remove linebreaks and indentation - 'description' => trim(preg_replace(['/^\h+/m', '/\R+/u',], ['', ' '], $param->description)), - 'byRef' => $param->isReference, - 'variadic' => $param->isVariadic, + 'description' => trim(preg_replace(['/^\h+/m', '/\R+/u',], ['', ' '], (string) $param->getDescription())), + 'byRef' => $param->isReference(), + 'variadic' => $param->isVariadic(), ]; } return $params; From 5bd76e9b6131ef59f6e6de36fe11aea56672555c Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 14:41:17 +1300 Subject: [PATCH 2/8] Making a few more adjustments to switch dependencies --- Annotations/AnnotationGenerator.php | 23 ++++++++--------------- Commands/GenerateAnnotations.php | 5 ----- tests/Unit/AnnotationGeneratorTest.php | 3 ++- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Annotations/AnnotationGenerator.php b/Annotations/AnnotationGenerator.php index 2ff84ad..4e045e4 100644 --- a/Annotations/AnnotationGenerator.php +++ b/Annotations/AnnotationGenerator.php @@ -12,12 +12,8 @@ namespace Piwik\Plugins\OpenApiDocs\Annotations; use Matomo\Dependencies\OpenApiDocs\phpDocumentor\Reflection\DocBlock\Tags\Param; +use Matomo\Dependencies\OpenApiDocs\phpDocumentor\Reflection\DocBlock\Tags\TagWithType; use Matomo\Dependencies\OpenApiDocs\phpDocumentor\Reflection\DocBlockFactory; -use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Lexer\Lexer; -use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\ConstExprParser; -use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\PhpDocParser; -use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\TokenIterator; -use Matomo\Dependencies\OpenApiDocs\PHPStan\PhpDocParser\Parser\TypeParser; use Piwik\API\DocumentationGenerator; use Piwik\API\NoDefaultValue; use Piwik\API\Proxy; @@ -315,27 +311,24 @@ public function getParamInfoFromDocBlock(string $docBlock): array */ public function getResponseInfoFromDocBlock(string $docBlock): array { - $lexer = new Lexer(); - $tokens = $lexer->tokenize($docBlock); - $expressionParser = new ConstExprParser(); - $parser = new PhpDocParser(new TypeParser($expressionParser), $expressionParser); - $node = $parser->parse(new TokenIterator($tokens)); + $factory = DocBlockFactory::createInstance(); + $docBlockObject = $factory->create($docBlock); $responseInfo = ['type' => null]; - $returnTags = $node->getReturnTagValues(); - if (empty($returnTags)) { + $returnTags = $docBlockObject->getTagsByName('return'); + if (empty($returnTags) || !($returnTags[0] instanceof TagWithType)) { return $responseInfo; } $returnTag = $returnTags[0]; - $tagValue = strval($returnTag->type); + $tagValue = strval($returnTag->getType()); $responseInfo['type'] = $this->getOpenApiTypeFromPhpType($tagValue); if ($responseInfo['type'] === 'string' && !empty($tagValue) && strtolower($tagValue) !== 'string') { $responseInfo['type'] = ''; $responseInfo['description'] = 'Response of unknown type'; } - if (!empty($returnTag->description)) { - $responseInfo['description'] = $returnTag->description; + if (!empty($returnTag->getDescription())) { + $responseInfo['description'] = $returnTag->getDescription(); } return $responseInfo; diff --git a/Commands/GenerateAnnotations.php b/Commands/GenerateAnnotations.php index 1c147df..d5faa45 100644 --- a/Commands/GenerateAnnotations.php +++ b/Commands/GenerateAnnotations.php @@ -72,11 +72,6 @@ protected function doExecute(): int $input = $this->getInput(); $output = $this->getOutput(); - if (!class_exists('PHPStan\PhpDocParser\Parser\PhpDocParser')) { - $output->writeln("This command requires phpstan/phpdoc-parser. It should be available while running Matomo in development mode."); - return self::FAILURE; - } - $plugin = $input->getOption('plugin'); if (empty($plugin)) { throw new \RuntimeException('Please specify a plugin name.'); diff --git a/tests/Unit/AnnotationGeneratorTest.php b/tests/Unit/AnnotationGeneratorTest.php index 834b46c..d365312 100644 --- a/tests/Unit/AnnotationGeneratorTest.php +++ b/tests/Unit/AnnotationGeneratorTest.php @@ -153,7 +153,7 @@ class AnnotationGeneratorTest extends TestCase * @param int[] $idDestinationSites Optional array of IDs identifying which site(s) the new custom report is to be * assigned to. The default is [idSite] when nothing is provided. * - * @return array + * @return array Some test description for the return annotation. * @throws Exception */'; @@ -316,6 +316,7 @@ public function testGetResponseInfoFromDocBlock(): void // TODO - Update to use resource file and/or dataprovider to test more than one comment block $expected = [ 'type' => 'array', + 'description' => 'Some test description for the return annotation.', ]; $this->assertEquals($expected, $this->annotationGenerator->getResponseInfoFromDocBlock(self::EXAMPLE_API_METHOD_DOC_BLOCK1)); } From 1626077e8c4a56ca679d85cc82229d949bbe33f9 Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 15:34:06 +1300 Subject: [PATCH 3/8] Try adding bootstrap to alias classes for PHPStan --- phpstan-bootstrap.php | 28 ++++++++++++++++++++++++++++ phpstan.neon | 1 + 2 files changed, 29 insertions(+) create mode 100644 phpstan-bootstrap.php diff --git a/phpstan-bootstrap.php b/phpstan-bootstrap.php new file mode 100644 index 0000000..db69c9e --- /dev/null +++ b/phpstan-bootstrap.php @@ -0,0 +1,28 @@ + Date: Wed, 8 Oct 2025 17:20:37 +1300 Subject: [PATCH 4/8] Try some changes --- config/test.php | 5 ++++ phpstan-bootstrap.php | 23 ++++++++++++++----- vendor/autoload_original.php | 2 +- vendor/composer/autoload_real.php | 10 ++++---- vendor/composer/autoload_static.php | 8 +++---- vendor/composer/installed.php | 4 ++-- vendor/prefixed/vendor/autoload.php | 2 +- .../vendor/composer/autoload_real.php | 10 ++++---- .../vendor/composer/autoload_static.php | 4 ++-- 9 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 config/test.php diff --git a/config/test.php b/config/test.php new file mode 100644 index 0000000..b9927b5 --- /dev/null +++ b/config/test.php @@ -0,0 +1,5 @@ +register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 5081b9f..7211ed4 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640 +class ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57 { public static $files = array( ); @@ -103,9 +103,9 @@ class ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index a4447cc..dae0451 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-5.x-dev', 'version' => 'dev-5.x-dev', - 'reference' => 'b5ecf24dbc489a212c869ea6953193928bdb8d36', + 'reference' => '1626077e8c4a56ca679d85cc82229d949bbe33f9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-5.x-dev', 'version' => 'dev-5.x-dev', - 'reference' => 'b5ecf24dbc489a212c869ea6953193928bdb8d36', + 'reference' => '1626077e8c4a56ca679d85cc82229d949bbe33f9', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/prefixed/vendor/autoload.php b/vendor/prefixed/vendor/autoload.php index bb9b4b7..63a6d1e 100644 --- a/vendor/prefixed/vendor/autoload.php +++ b/vendor/prefixed/vendor/autoload.php @@ -22,4 +22,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea::getLoader(); +return ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf::getLoader(); diff --git a/vendor/prefixed/vendor/composer/autoload_real.php b/vendor/prefixed/vendor/composer/autoload_real.php index 03b9f27..e65d638 100644 --- a/vendor/prefixed/vendor/composer/autoload_real.php +++ b/vendor/prefixed/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea +class ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf { private static $loader; @@ -22,16 +22,16 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/prefixed/vendor/composer/autoload_static.php b/vendor/prefixed/vendor/composer/autoload_static.php index e926779..db18b38 100644 --- a/vendor/prefixed/vendor/composer/autoload_static.php +++ b/vendor/prefixed/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea +class ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf { public static $files = array ( '66cfd3a7190309803b5cc0fea03a4cdc' => __DIR__ . '/../..' . '/symfony/deprecation-contracts/function.php', @@ -707,7 +707,7 @@ class ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->classMap = ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::$classMap; + $loader->classMap = ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::$classMap; }, null, ClassLoader::class); } From 14d2333a6a2db1528f9e03a1423f4fed942254c0 Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 17:49:36 +1300 Subject: [PATCH 5/8] Revert "Try some changes" This reverts commit 43b085b6120d41b737ce6a929ad33035c469f7de. --- config/test.php | 5 ---- phpstan-bootstrap.php | 23 +++++-------------- vendor/autoload_original.php | 2 +- vendor/composer/autoload_real.php | 10 ++++---- vendor/composer/autoload_static.php | 8 +++---- vendor/composer/installed.php | 4 ++-- vendor/prefixed/vendor/autoload.php | 2 +- .../vendor/composer/autoload_real.php | 10 ++++---- .../vendor/composer/autoload_static.php | 4 ++-- 9 files changed, 26 insertions(+), 42 deletions(-) delete mode 100644 config/test.php diff --git a/config/test.php b/config/test.php deleted file mode 100644 index b9927b5..0000000 --- a/config/test.php +++ /dev/null @@ -1,5 +0,0 @@ -register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 7211ed4..5081b9f 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57 +class ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640 { public static $files = array( ); @@ -103,9 +103,9 @@ class ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit453a28cb96a34b8b4d977dc6f929ec57::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit1e9ddc6b3f094bbece3e6bb946077640::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index dae0451..a4447cc 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-5.x-dev', 'version' => 'dev-5.x-dev', - 'reference' => '1626077e8c4a56ca679d85cc82229d949bbe33f9', + 'reference' => 'b5ecf24dbc489a212c869ea6953193928bdb8d36', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-5.x-dev', 'version' => 'dev-5.x-dev', - 'reference' => '1626077e8c4a56ca679d85cc82229d949bbe33f9', + 'reference' => 'b5ecf24dbc489a212c869ea6953193928bdb8d36', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/prefixed/vendor/autoload.php b/vendor/prefixed/vendor/autoload.php index 63a6d1e..bb9b4b7 100644 --- a/vendor/prefixed/vendor/autoload.php +++ b/vendor/prefixed/vendor/autoload.php @@ -22,4 +22,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf::getLoader(); +return ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea::getLoader(); diff --git a/vendor/prefixed/vendor/composer/autoload_real.php b/vendor/prefixed/vendor/composer/autoload_real.php index e65d638..03b9f27 100644 --- a/vendor/prefixed/vendor/composer/autoload_real.php +++ b/vendor/prefixed/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf +class ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea { private static $loader; @@ -22,16 +22,16 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit6f922240ff98aa4b8109ff425b28efcf', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit687941ea055bc304d2d4504ab6e8b4ea', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::getInitializer($loader)); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/prefixed/vendor/composer/autoload_static.php b/vendor/prefixed/vendor/composer/autoload_static.php index db18b38..e926779 100644 --- a/vendor/prefixed/vendor/composer/autoload_static.php +++ b/vendor/prefixed/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf +class ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea { public static $files = array ( '66cfd3a7190309803b5cc0fea03a4cdc' => __DIR__ . '/../..' . '/symfony/deprecation-contracts/function.php', @@ -707,7 +707,7 @@ class ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->classMap = ComposerStaticInit6f922240ff98aa4b8109ff425b28efcf::$classMap; + $loader->classMap = ComposerStaticInit687941ea055bc304d2d4504ab6e8b4ea::$classMap; }, null, ClassLoader::class); } From e3b4e31a659920b4572c9c45f0ab96127d178234 Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 17:49:59 +1300 Subject: [PATCH 6/8] Revert "Try adding bootstrap to alias classes for PHPStan" This reverts commit 1626077e8c4a56ca679d85cc82229d949bbe33f9. --- phpstan-bootstrap.php | 28 ---------------------------- phpstan.neon | 1 - 2 files changed, 29 deletions(-) delete mode 100644 phpstan-bootstrap.php diff --git a/phpstan-bootstrap.php b/phpstan-bootstrap.php deleted file mode 100644 index db69c9e..0000000 --- a/phpstan-bootstrap.php +++ /dev/null @@ -1,28 +0,0 @@ - Date: Wed, 8 Oct 2025 17:50:47 +1300 Subject: [PATCH 7/8] Adding autoload to test file --- tests/Unit/AnnotationGeneratorTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Unit/AnnotationGeneratorTest.php b/tests/Unit/AnnotationGeneratorTest.php index d365312..75aaa46 100644 --- a/tests/Unit/AnnotationGeneratorTest.php +++ b/tests/Unit/AnnotationGeneratorTest.php @@ -12,6 +12,7 @@ namespace Piwik\Plugins\OpenApiDocs\tests\Unit; +require_once PIWIK_INCLUDE_PATH . '/plugins/OpenApiDocs/vendor/autoload.php'; use PHPUnit\Framework\TestCase; use Piwik\API\DocumentationGenerator; use Piwik\API\NoDefaultValue; From b11d95a46114ee6657ef8b3b4df6e630f85e5fb9 Mon Sep 17 00:00:00 2001 From: Jacob Ransom Date: Wed, 8 Oct 2025 17:58:54 +1300 Subject: [PATCH 8/8] Trying simplified bootstrap for PHPStan --- phpstan-bootstrap.php | 4 ++++ phpstan.neon | 1 + 2 files changed, 5 insertions(+) create mode 100644 phpstan-bootstrap.php diff --git a/phpstan-bootstrap.php b/phpstan-bootstrap.php new file mode 100644 index 0000000..bdf349e --- /dev/null +++ b/phpstan-bootstrap.php @@ -0,0 +1,4 @@ +