mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Add more metadata (#1646)
* Add more metadata * composer fix-style * Parse .env * composer fix-style * Check if .env exists --------- Co-authored-by: laravel-ide-helper <[email protected]>
This commit is contained in:
co-authored by
laravel-ide-helper
parent
cffcd07e98
commit
f8381565ad
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
return collect(Illuminate\Support\Facades\Gate::abilities())
|
||||
->map(function ($policy, $key) {
|
||||
$reflection = new ReflectionFunction($policy);
|
||||
|
||||
$policyClass = null;
|
||||
|
||||
if (get_class($reflection->getClosureThis()) === Illuminate\Auth\Access\Gate::class) {
|
||||
$vars = $reflection->getClosureUsedVariables();
|
||||
|
||||
if (isset($vars['callback'])) {
|
||||
[$policyClass, $method] = explode('@', $vars['callback']);
|
||||
|
||||
$reflection = new ReflectionMethod($policyClass, $method);
|
||||
}
|
||||
}
|
||||
return [
|
||||
'key' => $key,
|
||||
'uri' => $reflection->getFileName(),
|
||||
'policy_class' => $policyClass,
|
||||
'lineNumber' => $reflection->getStartLine(),
|
||||
];
|
||||
})
|
||||
->merge(
|
||||
collect(Illuminate\Support\Facades\Gate::policies())->flatMap(function ($policy, $model) {
|
||||
$methods = (new ReflectionClass($policy))->getMethods();
|
||||
|
||||
return collect($methods)->map(function (ReflectionMethod $method) use ($policy) {
|
||||
return [
|
||||
'key' => $method->getName(),
|
||||
'uri' => $method->getFileName(),
|
||||
'policy_class' => $policy,
|
||||
'lineNumber' => $method->getStartLine(),
|
||||
];
|
||||
})->filter(function ($ability) {
|
||||
return !in_array($ability['key'], ['allow', 'deny']);
|
||||
});
|
||||
}),
|
||||
)
|
||||
->values()
|
||||
->groupBy('key');
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
return collect(app("Illuminate\Contracts\Http\Kernel")->getMiddlewareGroups())
|
||||
->merge(app("Illuminate\Contracts\Http\Kernel")->getRouteMiddleware())
|
||||
->map(function ($middleware, $key) {
|
||||
$result = [
|
||||
'class' => null,
|
||||
'uri' => null,
|
||||
'startLine' => null,
|
||||
'parameters' => null,
|
||||
'groups' => [],
|
||||
];
|
||||
|
||||
if (is_array($middleware)) {
|
||||
$result['groups'] = collect($middleware)->map(function ($m) {
|
||||
if (!class_exists($m)) {
|
||||
return [
|
||||
'class' => $m,
|
||||
'uri' => null,
|
||||
'startLine' => null,
|
||||
];
|
||||
}
|
||||
|
||||
$reflected = new ReflectionClass($m);
|
||||
$reflectedMethod = $reflected->getMethod('handle');
|
||||
|
||||
return [
|
||||
'class' => $m,
|
||||
'uri' => $reflected->getFileName(),
|
||||
'startLine' =>
|
||||
$reflectedMethod->getFileName() === $reflected->getFileName()
|
||||
? $reflectedMethod->getStartLine()
|
||||
: null,
|
||||
];
|
||||
})->all();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
$reflected = new ReflectionClass($middleware);
|
||||
$reflectedMethod = $reflected->getMethod('handle');
|
||||
|
||||
$result = array_merge($result, [
|
||||
'class' => $middleware,
|
||||
'uri' => $reflected->getFileName(),
|
||||
'startLine' => $reflectedMethod->getStartLine(),
|
||||
]);
|
||||
|
||||
$parameters = collect($reflectedMethod->getParameters())
|
||||
->filter(function ($rc) {
|
||||
return $rc->getName() !== 'request' && $rc->getName() !== 'next';
|
||||
})
|
||||
->map(function ($rc) {
|
||||
return $rc->getName() . ($rc->isVariadic() ? '...' : '');
|
||||
});
|
||||
|
||||
if ($parameters->isEmpty()) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
return array_merge($result, [
|
||||
'parameters' => $parameters->implode(','),
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user