On Tue, Nov 27, 2018 at 11:36 AM Larry Garfield <la...@garfieldtech.com> wrote:
>
> 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_scope
>
> Looks 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

It does not. To be honest, I did not think of it until your question.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to