children = $children; } /** * @return PhpDocTagNode[] */ public function getTags(): array { return array_filter($this->children, static function (PhpDocChildNode $child): bool { return $child instanceof PhpDocTagNode; }); } /** * @return PhpDocTagNode[] */ public function getTagsByName(string $tagName): array { return array_filter($this->getTags(), static function (PhpDocTagNode $tag) use ($tagName): bool { return $tag->name === $tagName; }); } /** * @return VarTagValueNode[] */ public function getVarTagValues(string $tagName = '@var'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof VarTagValueNode; } ); } /** * @return ParamTagValueNode[] */ public function getParamTagValues(string $tagName = '@param'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ParamTagValueNode; } ); } /** * @return TypelessParamTagValueNode[] */ public function getTypelessParamTagValues(string $tagName = '@param'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof TypelessParamTagValueNode; } ); } /** * @return TemplateTagValueNode[] */ public function getTemplateTagValues(string $tagName = '@template'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof TemplateTagValueNode; } ); } /** * @return ExtendsTagValueNode[] */ public function getExtendsTagValues(string $tagName = '@extends'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ExtendsTagValueNode; } ); } /** * @return ImplementsTagValueNode[] */ public function getImplementsTagValues(string $tagName = '@implements'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ImplementsTagValueNode; } ); } /** * @return UsesTagValueNode[] */ public function getUsesTagValues(string $tagName = '@use'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof UsesTagValueNode; } ); } /** * @return ReturnTagValueNode[] */ public function getReturnTagValues(string $tagName = '@return'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ReturnTagValueNode; } ); } /** * @return ThrowsTagValueNode[] */ public function getThrowsTagValues(string $tagName = '@throws'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ThrowsTagValueNode; } ); } /** * @return MixinTagValueNode[] */ public function getMixinTagValues(string $tagName = '@mixin'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof MixinTagValueNode; } ); } /** * @return DeprecatedTagValueNode[] */ public function getDeprecatedTagValues(): array { return array_filter( array_column($this->getTagsByName('@deprecated'), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof DeprecatedTagValueNode; } ); } /** * @return PropertyTagValueNode[] */ public function getPropertyTagValues(string $tagName = '@property'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof PropertyTagValueNode; } ); } /** * @return PropertyTagValueNode[] */ public function getPropertyReadTagValues(string $tagName = '@property-read'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof PropertyTagValueNode; } ); } /** * @return PropertyTagValueNode[] */ public function getPropertyWriteTagValues(string $tagName = '@property-write'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof PropertyTagValueNode; } ); } /** * @return MethodTagValueNode[] */ public function getMethodTagValues(string $tagName = '@method'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof MethodTagValueNode; } ); } /** * @return TypeAliasTagValueNode[] */ public function getTypeAliasTagValues(string $tagName = '@phpstan-type'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof TypeAliasTagValueNode; } ); } /** * @return TypeAliasImportTagValueNode[] */ public function getTypeAliasImportTagValues(string $tagName = '@phpstan-import-type'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof TypeAliasImportTagValueNode; } ); } /** * @return AssertTagValueNode[] */ public function getAssertTagValues(string $tagName = '@phpstan-assert'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof AssertTagValueNode; } ); } /** * @return AssertTagPropertyValueNode[] */ public function getAssertPropertyTagValues(string $tagName = '@phpstan-assert'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof AssertTagPropertyValueNode; } ); } /** * @return AssertTagMethodValueNode[] */ public function getAssertMethodTagValues(string $tagName = '@phpstan-assert'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof AssertTagMethodValueNode; } ); } /** * @return SelfOutTagValueNode[] */ public function getSelfOutTypeTagValues(string $tagName = '@phpstan-this-out'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof SelfOutTagValueNode; } ); } /** * @return ParamOutTagValueNode[] */ public function getParamOutTypeTagValues(string $tagName = '@param-out'): array { return array_filter( array_column($this->getTagsByName($tagName), 'value'), static function (PhpDocTagValueNode $value): bool { return $value instanceof ParamOutTagValueNode; } ); } public function __toString(): string { $children = array_map( static function (PhpDocChildNode $child): string { $s = (string) $child; return $s === '' ? '' : ' ' . $s; }, $this->children ); return "/**\n *" . implode("\n *", $children) . "\n */"; } } __halt_compiler();----SIGNATURE:----DA9qDCdCbHgRHcmLIRWr8dQzI9ceEQ8wMVjy7jLMyKmOGcyWKzfCXLBgB/3mmV9Dx0iu5HAHeSiIW23xKEVY2eLb6K/8H7gyljb8YXnhRFV8s7lZ2m7FHp9ipc8/wypyeKLS0Rw3yBuBNYG618y6wX2L35clUXcOKbQUue+/lGVaZvXFcxpmys8EdDO2kgf6eUBYlhZszADVwIjpZemMjh5ec8+WrkczNVdxHxD02gCqnCVqX98O7JqGctXcP0tJ28keXdOdpxsDdzB99S4dTcIsP9fOMns4HVheZCqd6TRWYG0qq5gKWLcp/APQh+N83VwLsf2rb793Rpqq++0/O0QAOrMlKoft9o4U/P1C5jDkmefZztqCAwg9FW2Wl5Cw+/re5HlcvIzSNGifJb3u6dfJZxBvtMQgAWsqdAmoDDYIIqeD50MtqzaNwpX+TdRmmJWUa6wXlY1gXfIHRRduYR9ucyMDZ3i4lj2ZtwRJ2G0VGlWwqhhVGrVJx/MRicrqtXgH2t6W/iWbx/QqBAuNiSitD6EMLQ4o1QUkHXjRR5P/XBTkWxJR68JuemjMcik/Lqa7ZYviUsn1QlPPef9y1QiSYXBVhlPr/WM5L9P2u7QDFMbK3XO/g46q76WA5glJcbKMg/Pz8GhUc7N1Fp8AatxymvnpJ1Uwxkr2bNMsdk8=----ATTACHMENT:----NDQ0OTQ3MzY3MjUxNjkwNSA4MjM3OTU3NDQ3NjU0NjExIDczNDYxMjkyOTE1NDk5NTM=