On Monday, November 26, 2018 3:25:52 PM CST Levi Morrison wrote:
> I am happy to announce my latest RFC, [Covariant Returns and
> Contravariant Parameters][1], is open for discussion. If you do not
> recognize those terms then hopefully the introduction coupled with the
> [examples][2] will help. Here is one snippet that demonstrates
> covariant return types:
>
> <?php
> interface Repository {
> function fetch(int $id): ?Entity;
> }
>
> class UserFactory implements Repository {
> function fetch(int $id): ?UserEntity {
> /* Since UserEntity is an Entity, this is now allowed */
> /* ... implementation ... */
> }
> }
> ?>
>
> Covariant return types and contravariant parameter types are highly
> requested features; here are a few of the bug reports:
>
> * https://bugs.php.net/bug.php?id=71825
> * https://bugs.php.net/bug.php?id=72442
> * https://bugs.php.net/bug.php?id=75385
> * https://bugs.php.net/bug.php?id=75823
>
> There is a [preliminary implementation][3] that is available. It will
> not be rebased during discussion to allow people to check out the code
> and get updates without worrying about it breaking. The code quality
> can definitely be improved, and there are still a few todo comments in
> the code.
>
> Please do not discuss the items found in [Future Scope][4] as part of
> this thread, which includes discussing types such as `mixed`,
> `scalar`, `numeric`, etc.
>
> I look forward to your feedback, and especially with your
> experimentation with the implementation.
>
> Levi Morrison
>
> [1]:
> https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters
> [2]:
> https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters#exa
> mples [3]:
> https://github.com/php/php-src/compare/master...morrisonlevi:variance2 [4]:
> https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters#fut
> ure_scopeLooks like fun! Would this also include allowing a return type of `static`, which would be useful for the "Return the object that was invoked" case or "return a new instance of the same object" case? Currently we're limited to `return self`, which is, of course, not the same thing and less flexible. --Larry Garfield
signature.asc
Description: This is a digitally signed message part.
