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\NodeFactory; use PhpParser\Node\Arg; us..
Decoded Output download
<?php
declare (strict_types=1);
namespace Rector\NodeFactory;
use PhpParser\Node\Arg;
use PhpParser\Node\Attribute;
use PhpParser\Node\Identifier;
use PhpParser\Node\Scalar\String_;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\Printer\BetterStandardPrinter;
final class DoctrineAnnotationFactory
{
/**
* @readonly
* @var \Rector\PhpParser\Printer\BetterStandardPrinter
*/
private $betterStandardPrinter;
public function __construct(BetterStandardPrinter $betterStandardPrinter)
{
$this->betterStandardPrinter = $betterStandardPrinter;
}
/**
* @api downgrade
*/
public function createFromAttribute(Attribute $attribute, string $className) : DoctrineAnnotationTagValueNode
{
$items = $this->createItemsFromArgs($attribute->args);
$identifierTypeNode = new IdentifierTypeNode($className);
return new DoctrineAnnotationTagValueNode($identifierTypeNode, null, $items);
}
/**
* @param Arg[] $args
* @return mixed[]
*/
private function createItemsFromArgs(array $args) : array
{
$items = [];
foreach ($args as $arg) {
if ($arg->value instanceof String_) {
// standardize double quotes for annotations
$arg->value->setAttribute(AttributeKey::KIND, String_::KIND_DOUBLE_QUOTED);
}
$itemValue = $this->betterStandardPrinter->print($arg->value);
if ($arg->name instanceof Identifier) {
$name = $this->betterStandardPrinter->print($arg->name);
$items[$name] = $itemValue;
} else {
$items[] = $itemValue;
}
}
return $items;
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare (strict_types=1);
namespace Rector\NodeFactory;
use PhpParser\Node\Arg;
use PhpParser\Node\Attribute;
use PhpParser\Node\Identifier;
use PhpParser\Node\Scalar\String_;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode;
use Rector\NodeTypeResolver\Node\AttributeKey;
use Rector\PhpParser\Printer\BetterStandardPrinter;
final class DoctrineAnnotationFactory
{
/**
* @readonly
* @var \Rector\PhpParser\Printer\BetterStandardPrinter
*/
private $betterStandardPrinter;
public function __construct(BetterStandardPrinter $betterStandardPrinter)
{
$this->betterStandardPrinter = $betterStandardPrinter;
}
/**
* @api downgrade
*/
public function createFromAttribute(Attribute $attribute, string $className) : DoctrineAnnotationTagValueNode
{
$items = $this->createItemsFromArgs($attribute->args);
$identifierTypeNode = new IdentifierTypeNode($className);
return new DoctrineAnnotationTagValueNode($identifierTypeNode, null, $items);
}
/**
* @param Arg[] $args
* @return mixed[]
*/
private function createItemsFromArgs(array $args) : array
{
$items = [];
foreach ($args as $arg) {
if ($arg->value instanceof String_) {
// standardize double quotes for annotations
$arg->value->setAttribute(AttributeKey::KIND, String_::KIND_DOUBLE_QUOTED);
}
$itemValue = $this->betterStandardPrinter->print($arg->value);
if ($arg->name instanceof Identifier) {
$name = $this->betterStandardPrinter->print($arg->name);
$items[$name] = $itemValue;
} else {
$items[] = $itemValue;
}
}
return $items;
}
}
Function Calls
None |
Stats
MD5 | a5d704b4d4151c82589d58842cbf7492 |
Eval Count | 0 |
Decode Time | 96 ms |