Re: Split as an alias to explode
| From: | Rowan Tommins [IMSoP] | Date: | Fri, 15 Aug 2025 17:04:58 +0000 |
| Subject: | Re: Split as an alias to explode | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-128479@lists.php.net to get a copy of this message | ||
On 15 August 2025 16:53:52 BST, Vinicius Dias <carlosv775@gmail.com> wrote:
>Hello, internal folks.
>
>We have
join as an alias for
>implode so I think it makes sense to
>have split as an alias to
>explode, doesn't it?
There's some history here that won't be obvious to anyone who has been using PHP for less
than a decade.
In PHP 4 and 5 (and maybe even earlier) PHP had separate functions called explode() and split(). One
split the string by an exact delimiter, the other split it by a regular expression pattern. For many
use cases, these were interchangeable, because a pattern with no special characters in was matched
literally; but in other cases, it caused a lot of confusion when split() gave unexpected results.
The entire "Posix-Compatible Regular Expressions" extension (ext/ereg) was deprecated in
PHP 5.3, and removed in 7.0. That included the split() function, leaving us with only explode().
At that point, making split() an alias of explode() would have been possible, but unhelpful: rather
than failing with "no such function", existing code would have subtly changed behaviour.
However, we have now had eight full releases with no built-in function called split(), so the chance
of somebody upgrading in one go from PHP 5.6 to PHP 8.5 and missing the change seems very low. If we
wanted to be really conservative, we could plan the alias for 9.0 so there were two clear major
versions between removal and reuse of the name.
I believe straightforward aliases like this are a single line in a stub file, unless there's
any compiler optimisations directly referencing the name.
As such, I would broadly support adding the alias: split() is the obvious name for this function,
and as you say it would mirror join()
Cheers,
Rowan Tommins
[IMSoP]