On Tue, Feb 11, 2020 at 9:57 AM Nicolas Grekas <nicolas.grekas+...@gmail.com>
wrote:

> Le lun. 27 janv. 2020 à 10:19, Nikita Popov <nikita....@gmail.com> a
> écrit :
>
> > On Wed, Jan 22, 2020 at 4:47 PM Nicolas Grekas <
> > nicolas.grekas+...@gmail.com> wrote:
> >
> >> Hello everyone,
> >>
> >> as announced last week, I'm officially opening a discussion for adding a
> >> "Stringable" interface to PHP 8.
> >>
> >> The RFC and its rationale are presented here as required:
> >> https://wiki.php.net/rfc/stringable
> >>
> >> The patch is found on GitHub, where some discussions happened already,
> you
> >> might be interested in having a look:
> >> https://github.com/php/php-src/pull/5083
> >>
> >> TL;DR, I think we need an interface to allow passing objects with a
> >> __toString() method in a type-safe way, using the string|Stringable
> type.
> >> Here is the stub of the proposal:
> >> interface Stringable { public function __toString(): string; }
> >>
> >> I invite everyone to review the RFC before commenting here as I tried to
> >> sum up considerations that some already had before and that you might
> have
> >> too.
> >>
> >> Cheers,
> >> Nicolas
> >>
> >
> > I'm wondering whether it could make sense to automatically implement this
> > interface for all classes that define __toString(). Explicitly
> implementing
> > the interface is useful for the transition period (where old PHP versions
> > also need to be supported), but when considering only PHP 8 support, I
> > think it may make sense to implicitly implement the interface. If the
> > __toString() functionality also works fine without implementing the
> > interface, and there's probably only going to be relatively few consumers
> > of the Stringable type, it will likely be quite common that the interface
> > will not get implemented...
> >
>
>
> This proposal has been implemented by Nikita himself on the linked PR, see
> 2nd commit:
> https://github.com/php/php-src/pull/5083
>
> I updated the RFC accordingly:
> https://wiki.php.net/rfc/stringable
>
> I think the RFC is ready for entering the voting stage.
> Any other comments before?
>

Just so someone has mentioned it... is "Stringable" really the best name
for this interface? Reddit really didn't like it ;) Some possible
alternatives: ToString, HasToString, CastsToString.

Something to keep in mind is that there has been a recent proposal for
"Arrayable" as well, and that had very different semantics (not about
__toArray() at all).

Regards,
Nikita

Reply via email to