Skip to content

Commit f347ea4

Browse files
committed
feat: add Filters::getRequiredClasses() method
1 parent 44db01c commit f347ea4

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

system/Filters/Filters.php

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -309,42 +309,60 @@ private function createFilter(string $className): FilterInterface
309309
}
310310

311311
/**
312-
* Runs "Required Filters" for the specified position.
313-
*
314-
* @return RequestInterface|ResponseInterface|string|null
312+
* Returns the "Required Filters" class list.
315313
*
316314
* @phpstan-param 'before'|'after' $position
317315
*
318-
* @throws FilterException
319-
*
320-
* @internal
316+
* @return list<array{0: class-string, 1: list<string>}> [[classname, arguments], ...]
321317
*/
322-
public function runRequired(string $position = 'before')
318+
public function getRequiredClasses(string $position): array
323319
{
324320
[$filters, $aliases] = $this->getRequiredFilters($position);
325321

326322
if ($filters === []) {
327-
return $position === 'before' ? $this->request : $this->response;
323+
return [];
328324
}
329325

330326
$filterClasses = [];
331327

332328
foreach ($filters as $alias) {
333329
if (is_array($aliases[$alias])) {
334330
foreach ($this->config->aliases[$alias] as $class) {
335-
$filterClasses[$position][] = [$class, []];
331+
$filterClasses[] = [$class, []];
336332
}
337333
} else {
338-
$filterClasses[$position][] = [$aliases[$alias], []];
334+
$filterClasses[] = [$aliases[$alias], []];
339335
}
340336
}
341337

338+
return $filterClasses;
339+
}
340+
341+
/**
342+
* Runs "Required Filters" for the specified position.
343+
*
344+
* @phpstan-param 'before'|'after' $position
345+
*
346+
* @return RequestInterface|ResponseInterface|string|null
347+
*
348+
* @throws FilterException
349+
*
350+
* @internal
351+
*/
352+
public function runRequired(string $position = 'before')
353+
{
354+
$filterClasses = $this->getRequiredClasses($position);
355+
356+
if ($filterClasses === []) {
357+
return $position === 'before' ? $this->request : $this->response;
358+
}
359+
342360
if ($position === 'before') {
343-
return $this->runBefore($filterClasses[$position]);
361+
return $this->runBefore($filterClasses);
344362
}
345363

346364
// After
347-
return $this->runAfter($filterClasses[$position]);
365+
return $this->runAfter($filterClasses);
348366
}
349367

350368
/**

0 commit comments

Comments
 (0)