implements |
ParameterPipelineInterface |
|---|
The parameter pipeline — both builder and runner.
Pins exactly one first() source and one last() source; interior
sources sit between. Builder methods return $this for fluent
chaining. The chain is held as a flat ordered list of source class
names; sources are resolved from the Laravel container on each
resolve() call (so they pick up per-request dependencies like
Request via constructor injection).
Per-call hot-plumbing. The pipeline is bound via bind in the
service provider (fresh instance per container resolution). A consumer
that mutates the chain with before() / after() does not leak that
mutation to other callers within the same request.
Linearity. The chain is structurally linear by construction —
before() and after() insert at a specific position relative to an
existing source; duplicate registration is forbidden. Cycles are
therefore impossible.
Typed output. Every value leaves resolve() in the one form its
slot's declared type names ({@see SlotValueCaster}), whichever source filled
it. A value without such a form is refused loudly: a 422 when the request
supplied it, a reported exception when a server-side source did. It is never
skipped in favour of a later source — that would answer a broken request
with the default and hide the mistake.
| Methods | ||
|---|---|---|
public
|
__construct(Container $container)
|
# |
public
|
first(string $sourceClass): self
|
# |
public
|
then(string $sourceClass): self
|
# |
public
|
last(string $sourceClass): self
|
# |
public
|
before(string $existingSource, string $newSource): self
|
# |
public
|
after(string $existingSource, string $newSource): self
|
# |
public
|
resolve(array $slots): array
|
# |
public
|
chain(): class-string<ParameterSourceInterface>[]
|
# |