Skip to content

Commit 75ce083

Browse files
authored
Allow parse expressions with Request::validate facade usage
1 parent 8a6c644 commit 75ce083

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Knuckles\Scribe\Extracting\Shared\ValidationRulesFinders;
4+
5+
use PhpParser\Node;
6+
7+
/**
8+
* This class looks for
9+
* $anyVariable = Request::validate(...);
10+
* or just
11+
* Request::validate(...);
12+
*
13+
* Also supports `->validateWithBag('', ...)`
14+
*/
15+
class RequestValidateFacade
16+
{
17+
public static function find(Node $node)
18+
{
19+
if (!($node instanceof Node\Stmt\Expression)) return;
20+
21+
$expr = $node->expr;
22+
if ($expr instanceof Node\Expr\Assign) {
23+
$expr = $expr->expr; // If it's an assignment, get the expression on the RHS
24+
}
25+
26+
if (
27+
$expr instanceof Node\Expr\StaticCall
28+
&& in_array((string) $expr->class, ['Request', \Illuminate\Support\Facades\Request::class])
29+
) {
30+
if ($expr->name->name == "validate") {
31+
return $expr->args[0]->value;
32+
}
33+
34+
if ($expr->name->name == "validateWithBag") {
35+
return $expr->args[1]->value;
36+
}
37+
}
38+
}
39+
}

src/Extracting/Strategies/GetFromInlineValidatorBase.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ protected function findValidationExpression($statements): ?array
175175
{
176176
$strategies = [
177177
RequestValidate::class, // $request->validate(...);
178+
RequestValidateFacade::class, // Request::validate(...);
178179
ValidatorMake::class, // Validator::make($request, ...)
179180
ThisValidate::class, // $this->validate(...);
180181
];

0 commit comments

Comments
 (0)