Regarding the mixed type-hint RFC:
https://wiki.php.net/rfc/mixed-typehint
When no native type is present, it is unclear what type is expected
Regarding variance - in the examples shown in the RFC, it is still unclear
whether your intention was variance, or if you just omitted the type-hint
by accident.
The introduction of the mixed type-hint, as I was trying to explain
earlier, could have addressed that problem - by allowing mixed variance
only with an explicit type-hint and disallowing implicit variance.
As I pointed out when the variance RFCs were accepted, it's too late to
remove this allowance now, as that would be a breaking change.
However, could we at least make it an E_STRICT?
So that, given the following:
class A {
public function foo(int $value) {}
}
The following would emit an E_STRICT:
class B extends A {
public function foo($value) {} // E_STRICT: implied variance
}
And the following would not:
class B extends A {
public function foo(mixed $value) {} // explicit variance
}
An E_STRICT
is not a breaking change, right?
At least then we can map E_STRICT
to an ErrorException during development.
Without this, the mixed type-hint is basically meaningless noise, is it
not? About as effective is a doc-block?