On Mon, Feb 26, 2024, at 7:39 PM, Rowan Tommins [IMSoP] wrote: > On 26/02/2024 19:02, Frederik Bosch wrote: >> >> That's how it always has been, no? So in your example, short code >> abbreviated form would not work. One has to write a block. >> >> public string$fullName { >> set=> [$this->first, $this->last] = explode >> <http://www.php.net/explode>(' ', \ucfirst >> <http://www.php.net/ucfirst>($value)); // error, $fullName is a string, >> returning array >> } >> >> public string$fullName { >> set{ >> [$this->first, $this->last] = explode >> <http://www.php.net/explode>(' ', \ucfirst >> <http://www.php.net/ucfirst>($value)); // no error, not returning >> } >> } > > > I think the intention is that both the block and the arrow syntax would > have any return value ignored, as happens with constructors, for > example. Note that in PHP, there is actually no such thing as "a > function not returning a value", even a "void" function actually returns > null; so if the return value was treated as meaningful, your second > example would give an error "cannot assign null to property of type string".
This correct. Given a function test(): $ret = test('Larry Garfield'); There's no way to tell if $ret is a possibly-null value we should do something with, or null by side-effect. The RFC right now takes the stance of "it's null by side effect, always, so we never do anything with the return so it's consistent." > However, as noted in a previous message, I agree that the short form > meaning "the value returned is saved to the backing field" is both more > expected and more useful. You're the first person to comment on it, but I'm glad you agree. :-) I like it, but Ilija is still unsure about it. > The "yield" idea is ... interesting. I think personally I find it a bit > too magic, and too cryptic to be more readable than an explicit > assignment. Opinions may vary, though. > > Regards, Mixing in syntax only used for generators here seems like it's asking for trouble. It wouldn't actually be a coroutine, so using coroutine like syntax would just be confusing. It's confusing to me whether this implies the hook becomes a generator or not, which means it's likely to confuse a lot of other people. --Larry Garfield