REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 3.99 KB
Close
//opt/cpanel/ea-wappspector/vendor/rector/rector/rules/Php80/NodeAnalyzer/PhpAttributeAnalyzer.php
Text
Base64
<?php declare (strict_types=1); namespace Rector\Php80\NodeAnalyzer; use PhpParser\Node\Arg; use PhpParser\Node\AttributeGroup; use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\ArrayItem; use PhpParser\Node\Param; use PhpParser\Node\Scalar\String_; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Property; use PHPStan\Reflection\ReflectionProvider; use Rector\NodeNameResolver\NodeNameResolver; use Rector\Php81\Enum\AttributeName; use Rector\PhpAttribute\Enum\DocTagNodeState; final class PhpAttributeAnalyzer { /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; /** * @readonly * @var \PHPStan\Reflection\ReflectionProvider */ private $reflectionProvider; public function __construct(NodeNameResolver $nodeNameResolver, ReflectionProvider $reflectionProvider) { $this->nodeNameResolver = $nodeNameResolver; $this->reflectionProvider = $reflectionProvider; } /** * @param \PhpParser\Node\Stmt\Property|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Param $node */ public function hasPhpAttribute($node, string $attributeClass) : bool { foreach ($node->attrGroups as $attrGroup) { foreach ($attrGroup->attrs as $attribute) { if (!$this->nodeNameResolver->isName($attribute->name, $attributeClass)) { continue; } return \true; } } return \false; } /** * @param AttributeName::* $attributeClass */ public function hasInheritedPhpAttribute(Class_ $class, string $attributeClass) : bool { $className = (string) $this->nodeNameResolver->getName($class); if (!$this->reflectionProvider->hasClass($className)) { return \false; } $classReflection = $this->reflectionProvider->getClass($className); $ancestorClassReflections = \array_merge($classReflection->getParents(), $classReflection->getInterfaces()); foreach ($ancestorClassReflections as $ancestorClassReflection) { $nativeReflection = $ancestorClassReflection->getNativeReflection(); if ((\method_exists($nativeReflection, 'getAttributes') ? $nativeReflection->getAttributes($attributeClass) : []) !== []) { return \true; } } return \false; } /** * @param string[] $attributeClasses * @param \PhpParser\Node\Stmt\Property|\PhpParser\Node\Stmt\ClassLike|\PhpParser\Node\Stmt\ClassMethod|\PhpParser\Node\Param $node */ public function hasPhpAttributes($node, array $attributeClasses) : bool { foreach ($attributeClasses as $attributeClass) { if ($this->hasPhpAttribute($node, $attributeClass)) { return \true; } } return \false; } /** * @param AttributeGroup[] $attributeGroups */ public function hasRemoveArrayState(array $attributeGroups) : bool { foreach ($attributeGroups as $attributeGroup) { foreach ($attributeGroup->attrs as $attribute) { $args = $attribute->args; if ($this->hasArgWithRemoveArrayValue($args)) { return \true; } } } return \false; } /** * @param Arg[] $args */ private function hasArgWithRemoveArrayValue(array $args) : bool { foreach ($args as $arg) { if (!$arg->value instanceof Array_) { continue; } foreach ($arg->value->items as $item) { if (!$item instanceof ArrayItem) { continue; } if ($item->value instanceof String_ && $item->value->value === DocTagNodeState::REMOVE_ARRAY) { return \true; } } } return \false; } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 5
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
MatchSwitchAnalyzer.php
5.64 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PhpAttributeAnalyzer.php
3.99 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PromotedPropertyCandidateResolver.php
5.95 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
PromotedPropertyResolver.php
801 B
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
SwitchAnalyzer.php
3.73 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).