Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Suppose we have a function
f
that perfectly works with some domain of values calledA
.[Domain A/input] -> f -> [Codomain A/output]
At the same time, we have another function
g
that works fine with another domain of values calledB
.[Domain B/input] -> g -> [Codomain B/output]
The function
f
can safely replace the functiong
if and only if the domainB
is a subset of the domainA
&& the codomainA
is a subset of the codomainB
.Let's look at the following signatures
Headers::setHeader(string $name, ...)
-f
(domainA
is string type)Message::withHeader($name, ...)
-g
(domainB
is any type)When we do something like this
$response->withHeader($any, ...)
we violate the above principle. The specified method call is transformed to$this->headers->setHeader($any, ...)
.The domain
A
(string type) is less than the domainB
(any type). For this reason, unnecessary static methods had to be implemented causing a problem.