Вход Регистрация
Файл: vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
Строк: 124
<?php

/**
 * This file is part of the Carbon package.
 *
 * (c) Brian Nesbitt <brian@nesbot.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace CarbonPHPStan;

use 
PHPStanReflectionAssertions;
use 
PHPStanReflectionClassReflection;
use 
PHPStanReflectionMethodReflection;
use 
PHPStanReflectionMethodsClassReflectionExtension;
use 
PHPStanReflectionPhpPhpMethodReflectionFactory;
use 
PHPStanReflectionReflectionProvider;
use 
PHPStanTypeTypehintHelper;

/**
 * Class MacroExtension.
 *
 * @codeCoverageIgnore Pure PHPStan wrapper.
 */
final class MacroExtension implements MethodsClassReflectionExtension
{
    
/**
     * @var PhpMethodReflectionFactory
     */
    
protected $methodReflectionFactory;

    
/**
     * @var MacroScanner
     */
    
protected $scanner;

    
/**
     * Extension constructor.
     *
     * @param PhpMethodReflectionFactory $methodReflectionFactory
     * @param ReflectionProvider         $reflectionProvider
     */
    
public function __construct(
        
PhpMethodReflectionFactory $methodReflectionFactory,
        
ReflectionProvider $reflectionProvider
    
) {
        
$this->scanner = new MacroScanner($reflectionProvider);
        
$this->methodReflectionFactory $methodReflectionFactory;
    }

    
/**
     * {@inheritdoc}
     */
    
public function hasMethod(ClassReflection $classReflectionstring $methodName): bool
    
{
        return 
$this->scanner->hasMethod($classReflection->getName(), $methodName);
    }

    
/**
     * {@inheritdoc}
     */
    
public function getMethod(ClassReflection $classReflectionstring $methodName): MethodReflection
    
{
        
$builtinMacro $this->scanner->getMethod($classReflection->getName(), $methodName);
        
$supportAssertions class_exists(Assertions::class);

        return 
$this->methodReflectionFactory->create(
            
$classReflection,
            
null,
            
$builtinMacro,
            
$classReflection->getActiveTemplateTypeMap(),
            [],
            
TypehintHelper::decideTypeFromReflection($builtinMacro->getReturnType()),
            
null,
            
null,
            
$builtinMacro->isDeprecated()->yes(),
            
$builtinMacro->isInternal(),
            
$builtinMacro->isFinal(),
            
$supportAssertions null $builtinMacro->getDocComment(),
            
$supportAssertions Assertions::createEmpty() : null,
            
null,
            
$builtinMacro->getDocComment(),
            []
        );
    }
}
Онлайн: 0
Реклама