Skip to content

Define Stringable with toString():string method#5088

Closed
nicolas-grekas wants to merge 1 commit into
php:masterfrom
nicolas-grekas:stringable-regular-method
Closed

Define Stringable with toString():string method#5088
nicolas-grekas wants to merge 1 commit into
php:masterfrom
nicolas-grekas:stringable-regular-method

Conversation

@nicolas-grekas
Copy link
Copy Markdown
Contributor

This PR is opened for the purpose of comparison with #5083

It adds a new interface:

interface Stringable
{
   public function toString(): string;
}

Implementing this interface triggers the same magic behavior as implementing __toString().

Compared to #5083, the new method has no double underscore as a prefix, which means it can more easily be used as part of public APIs.

Yet, it requires a more invasive change in the engine, and leads to duplicate __toString() and toString() methods for BC. Since adding a method named toString() can be done purely in userland, it appears that this approach might not be the preferred one for php-internals, which seeks for the lesser complexity.

@nicolas-grekas nicolas-grekas deleted the stringable-regular-method branch January 15, 2020 19:17
@slavcodev
Copy link
Copy Markdown

@nicolas-grekas I appriciate the effort you put in this PR. Thank you.

I would like to be able to add a public API to the object for mapping to the string without losing the advantage of internal coherence in string functions but I see the issue with duplicates of code for BC. So yeah, if this does not fit the PHP development path then further discussion on this topic is not worth it.

Again, thank you for your time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants