Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php declare (strict_types=1); namespace Rector\Doctrine\NodeManipulator; use PhpParser..
Decoded Output download
<?php
declare (strict_types=1);
namespace Rector\Doctrine\NodeManipulator;
use PhpParser\Node\Expr;
use PhpParser\Node\Stmt\Property;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Doctrine\Enum\MappingClass;
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
use Rector\PhpParser\Node\Value\ValueResolver;
final class NullabilityColumnPropertyTypeResolver
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
/**
* @readonly
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
*/
private $attributeFinder;
/**
* @readonly
* @var \Rector\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
/**
* @var string
*/
private const COLUMN_CLASS = 'Doctrine\\ORM\\Mapping\\Column';
/**
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
*/
public function __construct(PhpDocInfoFactory $phpDocInfoFactory, AttributeFinder $attributeFinder, ValueResolver $valueResolver)
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->attributeFinder = $attributeFinder;
$this->valueResolver = $valueResolver;
}
public function isNullable(Property $property) : bool
{
$nullableExpr = $this->attributeFinder->findAttributeByClassArgByName($property, MappingClass::COLUMN, 'nullable');
if ($nullableExpr instanceof Expr) {
return $this->valueResolver->isTrue($nullableExpr);
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
return $this->isNullableColumn($phpDocInfo);
}
private function isNullableColumn(PhpDocInfo $phpDocInfo) : bool
{
$doctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass(self::COLUMN_CLASS);
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
return \true;
}
$nullableValueArrayItemNode = $doctrineAnnotationTagValueNode->getValue('nullable');
if (!$nullableValueArrayItemNode instanceof ArrayItemNode) {
return \true;
}
return $nullableValueArrayItemNode->value instanceof ConstExprTrueNode;
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare (strict_types=1);
namespace Rector\Doctrine\NodeManipulator;
use PhpParser\Node\Expr;
use PhpParser\Node\Stmt\Property;
use PHPStan\PhpDocParser\Ast\ConstExpr\ConstExprTrueNode;
use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo;
use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory;
use Rector\Doctrine\Enum\MappingClass;
use Rector\Doctrine\NodeAnalyzer\AttributeFinder;
use Rector\PhpParser\Node\Value\ValueResolver;
final class NullabilityColumnPropertyTypeResolver
{
/**
* @readonly
* @var \Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory
*/
private $phpDocInfoFactory;
/**
* @readonly
* @var \Rector\Doctrine\NodeAnalyzer\AttributeFinder
*/
private $attributeFinder;
/**
* @readonly
* @var \Rector\PhpParser\Node\Value\ValueResolver
*/
private $valueResolver;
/**
* @var string
*/
private const COLUMN_CLASS = 'Doctrine\\ORM\\Mapping\\Column';
/**
* @see https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/basic-mapping.html#doctrine-mapping-types
*/
public function __construct(PhpDocInfoFactory $phpDocInfoFactory, AttributeFinder $attributeFinder, ValueResolver $valueResolver)
{
$this->phpDocInfoFactory = $phpDocInfoFactory;
$this->attributeFinder = $attributeFinder;
$this->valueResolver = $valueResolver;
}
public function isNullable(Property $property) : bool
{
$nullableExpr = $this->attributeFinder->findAttributeByClassArgByName($property, MappingClass::COLUMN, 'nullable');
if ($nullableExpr instanceof Expr) {
return $this->valueResolver->isTrue($nullableExpr);
}
$phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($property);
return $this->isNullableColumn($phpDocInfo);
}
private function isNullableColumn(PhpDocInfo $phpDocInfo) : bool
{
$doctrineAnnotationTagValueNode = $phpDocInfo->findOneByAnnotationClass(self::COLUMN_CLASS);
if (!$doctrineAnnotationTagValueNode instanceof DoctrineAnnotationTagValueNode) {
return \true;
}
$nullableValueArrayItemNode = $doctrineAnnotationTagValueNode->getValue('nullable');
if (!$nullableValueArrayItemNode instanceof ArrayItemNode) {
return \true;
}
return $nullableValueArrayItemNode->value instanceof ConstExprTrueNode;
}
}
Function Calls
None |
Stats
MD5 | fc2a93a6a508fb2f077dd40ff0332c05 |
Eval Count | 0 |
Decode Time | 87 ms |