1
0
mirror of https://github.com/flarum/core.git synced 2025-07-26 11:10:41 +02:00
Files
php-flarum/php-packages/phpstan/src/Methods/Kernel.php
2021-12-28 20:45:22 -05:00

73 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace Flarum\PHPStan\Methods;
use Illuminate\Pipeline\Pipeline;
use Flarum\PHPStan\Concerns;
use Flarum\PHPStan\Contracts\Methods\PassableContract;
use PHPStan\Reflection\ClassReflection;
use PHPStan\Reflection\Php\PhpMethodReflectionFactory;
use PHPStan\Reflection\ReflectionProvider;
/**
* @internal
*/
final class Kernel
{
use Concerns\HasContainer;
/**
* @var PhpMethodReflectionFactory
*/
private $methodReflectionFactory;
/**
* @var ReflectionProvider
*/
private $reflectionProvider;
/**
* Kernel constructor.
*
* @param PhpMethodReflectionFactory $methodReflectionFactory
*/
public function __construct(
PhpMethodReflectionFactory $methodReflectionFactory,
ReflectionProvider $reflectionProvider
) {
$this->methodReflectionFactory = $methodReflectionFactory;
$this->reflectionProvider = $reflectionProvider;
}
/**
* @param ClassReflection $classReflection
* @param string $methodName
* @return PassableContract
*/
public function handle(ClassReflection $classReflection, string $methodName): PassableContract
{
$pipeline = new Pipeline($this->getContainer());
$passable = new Passable($this->methodReflectionFactory, $this->reflectionProvider, $pipeline, $classReflection, $methodName);
$pipeline->send($passable)
->through(
[
Pipes\SelfClass::class,
Pipes\Macros::class,
Pipes\Contracts::class,
Pipes\Facades::class,
Pipes\Managers::class,
Pipes\Auths::class,
]
)
->then(
function ($method) {
}
);
return $passable;
}
}