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 Reflection; use Generator; use Illuminate\Http..

Decoded Output download

<?php

declare(strict_types=1);

namespace Reflection;

use Generator;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
use Larastan\Larastan\Methods\MacroMethodsClassReflectionExtension;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Testing\PHPStanTestCase;
use PHPStan\Type\ClosureTypeFactory;
use PHPStan\Type\ObjectType;

class MacroMethodsClassReflectionExtensionTest extends PHPStanTestCase
{
    private ReflectionProvider $reflectionProvider;

    private MacroMethodsClassReflectionExtension $reflectionExtension;

    protected function setUp(): void
    {
        parent::setUp();

        $this->reflectionProvider  = $this->createReflectionProvider();
        $this->reflectionExtension = new MacroMethodsClassReflectionExtension($this->reflectionProvider, self::getContainer()->getByType(ClosureTypeFactory::class));
    }

    /**
     * @test
     * @dataProvider methodAndClassProvider
     */
    public function it_can_find_macros_on_a_class(string $class, string $methodName): void
    {
        $requestClass = $this->reflectionProvider->getClass($class);

        $this->assertTrue($this->reflectionExtension->hasMethod($requestClass, $methodName));
    }

    /**
     * @test
     * @dataProvider methodAndThrowTypeProvider
     */
    public function it_can_set_throw_type_for_macros(string $class, string $methodName, string $exceptionClass): void
    {
        $requestClass = $this->reflectionProvider->getClass($class);

        $this->assertTrue($this->reflectionExtension->hasMethod($requestClass, $methodName));

        $method = $this->reflectionExtension->getMethod($requestClass, $methodName);

        $this->assertNotNull($method->getThrowType());
        $this->assertInstanceOf(ObjectType::class, $method->getThrowType());
        $this->assertSame($exceptionClass, $method->getThrowType()->getClassName());
    }

    public static function methodAndClassProvider(): Generator
    {
        yield [Request::class, 'validate'];
        yield [Request::class, 'validateWithBag'];
        yield [Request::class, 'hasValidSignature'];
        yield [Request::class, 'hasValidRelativeSignature'];
    }

    public static function methodAndThrowTypeProvider(): Generator
    {
        yield [Request::class, 'validate', ValidationException::class];
        yield [Request::class, 'validateWithBag', ValidationException::class];
    }

    /** @return string[] */
    public static function getAdditionalConfigFiles(): array
    {
        return [__DIR__ . '/../../extension.neon'];
    }
}
 ?>

Did this file decode correctly?

Original Code

<?php

declare(strict_types=1);

namespace Reflection;

use Generator;
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
use Larastan\Larastan\Methods\MacroMethodsClassReflectionExtension;
use PHPStan\Reflection\ReflectionProvider;
use PHPStan\Testing\PHPStanTestCase;
use PHPStan\Type\ClosureTypeFactory;
use PHPStan\Type\ObjectType;

class MacroMethodsClassReflectionExtensionTest extends PHPStanTestCase
{
    private ReflectionProvider $reflectionProvider;

    private MacroMethodsClassReflectionExtension $reflectionExtension;

    protected function setUp(): void
    {
        parent::setUp();

        $this->reflectionProvider  = $this->createReflectionProvider();
        $this->reflectionExtension = new MacroMethodsClassReflectionExtension($this->reflectionProvider, self::getContainer()->getByType(ClosureTypeFactory::class));
    }

    /**
     * @test
     * @dataProvider methodAndClassProvider
     */
    public function it_can_find_macros_on_a_class(string $class, string $methodName): void
    {
        $requestClass = $this->reflectionProvider->getClass($class);

        $this->assertTrue($this->reflectionExtension->hasMethod($requestClass, $methodName));
    }

    /**
     * @test
     * @dataProvider methodAndThrowTypeProvider
     */
    public function it_can_set_throw_type_for_macros(string $class, string $methodName, string $exceptionClass): void
    {
        $requestClass = $this->reflectionProvider->getClass($class);

        $this->assertTrue($this->reflectionExtension->hasMethod($requestClass, $methodName));

        $method = $this->reflectionExtension->getMethod($requestClass, $methodName);

        $this->assertNotNull($method->getThrowType());
        $this->assertInstanceOf(ObjectType::class, $method->getThrowType());
        $this->assertSame($exceptionClass, $method->getThrowType()->getClassName());
    }

    public static function methodAndClassProvider(): Generator
    {
        yield [Request::class, 'validate'];
        yield [Request::class, 'validateWithBag'];
        yield [Request::class, 'hasValidSignature'];
        yield [Request::class, 'hasValidRelativeSignature'];
    }

    public static function methodAndThrowTypeProvider(): Generator
    {
        yield [Request::class, 'validate', ValidationException::class];
        yield [Request::class, 'validateWithBag', ValidationException::class];
    }

    /** @return string[] */
    public static function getAdditionalConfigFiles(): array
    {
        return [__DIR__ . '/../../extension.neon'];
    }
}

Function Calls

None

Variables

None

Stats

MD5 b79b5656c6ce84fafcfe555a461c86f2
Eval Count 0
Decode Time 76 ms