On 29 June 2026 23:32:18 BST, Michal Kral <[email protected]> wrote:
>Hi all,
>
>Per Seifeddine's suggestion to keep this out of the karma-request thread, I'm 
>opening a pre-RFC discussion for scalar object methods -- calling a small, 
>curated set of methods directly on scalar values, e.g. $str->trim(), 
>(3)->pow(2).

Hi Michal,

Thanks for bringing this to the list. I think it's an interesting experiment, 
but I agree with a lot of the previous responses that it's just too limited to 
be useful. 

The advantage often given for scalar methods is to give us a chance to write a 
new set of standard utilities that's more consistent and easier to learn. But 
in order to achieve that, users need to be able to rely on it. 

With this proposal, there's a long list of requirements: 

- you need to be running an up to date version of PHP; there's no way to 
"polyfill" the syntax in userland, or even backport specific methods introduced 
in later versions 

- the function you're looking for needs to have a method equivalent in a list 
that's starting small (again, no polyfills or backports)

- you need to understand the requirements for what is allowed as a "receiver", 
or sprinkle a load of explicit types everywhere just in case

- you still need to know what it's called, and what the parameters are

If any of those requirements aren't met, you're going to have to fall back on 
the existing function, which is probably described in several thousand easy to 
find web pages because it's been in PHP for 30 years. 

Typed locals is an interesting feature in itself, but comes with a bunch of 
decisions around things like scope, shadowing, etc, as well as potential 
performance impact. It deserves an RFC to itself.

Even if we add that, encouraging users to write explicit types for every single 
variable goes against the current trend in other languages, where types are 
either inferred by default, or can be optionally interred with a keyword like 
"auto".

And while temporary variables can help readability, often they hurt it. Even 
with some of PHP's uglier function names, I think this...

echo htmlspecialchars($_GET['foo']); 

...is probably nicer than this

string $temp=$_GET['foo'];
echo $temp->escapeHtml();

To be honest, I'm not even totally sold on this: 

echo $_GET['foo']->escapeHtml();

When we could much more simply introduce this: 

echo \Str\escape_html($_GET['foo']);

Rowan Tommins
[IMSoP]

Reply via email to