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 Larastan\Larastan\Types; use PhpParser\Node\Ex..
Decoded Output download
<?php
declare(strict_types=1);
namespace Larastan\Larastan\Types;
use PhpParser\Node\Expr\FuncCall;
use PHPStan\Analyser\Scope;
use PHPStan\Analyser\SpecifiedTypes;
use PHPStan\Analyser\TypeSpecifier;
use PHPStan\Analyser\TypeSpecifierAwareExtension;
use PHPStan\Analyser\TypeSpecifierContext;
use PHPStan\Reflection\FunctionReflection;
use PHPStan\Type\FunctionTypeSpecifyingExtension;
use function count;
use function str_starts_with;
final class AbortIfFunctionTypeSpecifyingExtension implements FunctionTypeSpecifyingExtension, TypeSpecifierAwareExtension
{
private TypeSpecifier $typeSpecifier;
protected string $methodName;
public function __construct(protected bool $negate, string $methodName)
{
$this->methodName = $methodName . '_' . ($negate === false ? 'if' : 'unless');
}
public function isFunctionSupported(
FunctionReflection $functionReflection,
FuncCall $node,
TypeSpecifierContext $context,
): bool {
return $functionReflection->getName() === $this->methodName && $context->null();
}
public function specifyTypes(
FunctionReflection $functionReflection,
FuncCall $node,
Scope $scope,
TypeSpecifierContext $context,
): SpecifiedTypes {
if (! str_starts_with($this->methodName, 'throw') && count($node->args) < 2) {
return new SpecifiedTypes();
}
$context = $this->negate === false ? TypeSpecifierContext::createFalsey() : TypeSpecifierContext::createTruthy();
return $this->typeSpecifier->specifyTypesInCondition($scope, $node->getArgs()[0]->value, $context);
}
public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void
{
$this->typeSpecifier = $typeSpecifier;
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare(strict_types=1);
namespace Larastan\Larastan\Types;
use PhpParser\Node\Expr\FuncCall;
use PHPStan\Analyser\Scope;
use PHPStan\Analyser\SpecifiedTypes;
use PHPStan\Analyser\TypeSpecifier;
use PHPStan\Analyser\TypeSpecifierAwareExtension;
use PHPStan\Analyser\TypeSpecifierContext;
use PHPStan\Reflection\FunctionReflection;
use PHPStan\Type\FunctionTypeSpecifyingExtension;
use function count;
use function str_starts_with;
final class AbortIfFunctionTypeSpecifyingExtension implements FunctionTypeSpecifyingExtension, TypeSpecifierAwareExtension
{
private TypeSpecifier $typeSpecifier;
protected string $methodName;
public function __construct(protected bool $negate, string $methodName)
{
$this->methodName = $methodName . '_' . ($negate === false ? 'if' : 'unless');
}
public function isFunctionSupported(
FunctionReflection $functionReflection,
FuncCall $node,
TypeSpecifierContext $context,
): bool {
return $functionReflection->getName() === $this->methodName && $context->null();
}
public function specifyTypes(
FunctionReflection $functionReflection,
FuncCall $node,
Scope $scope,
TypeSpecifierContext $context,
): SpecifiedTypes {
if (! str_starts_with($this->methodName, 'throw') && count($node->args) < 2) {
return new SpecifiedTypes();
}
$context = $this->negate === false ? TypeSpecifierContext::createFalsey() : TypeSpecifierContext::createTruthy();
return $this->typeSpecifier->specifyTypesInCondition($scope, $node->getArgs()[0]->value, $context);
}
public function setTypeSpecifier(TypeSpecifier $typeSpecifier): void
{
$this->typeSpecifier = $typeSpecifier;
}
}
Function Calls
| None |
Stats
| MD5 | d089dceb3a1d22d4055f7b7c8a0e2b8f |
| Eval Count | 0 |
| Decode Time | 109 ms |