In his latest post Nikita Popov highlights one of the topics from this post, primitive types as objects, and some alternative options.
A few days ago Anthony Ferrara wrote down some thoughts on the future of PHP. I concur with most of his opinions, but not all of them. In this post I’ll focus on one particular aspect: Turning primitive types like strings or arrays into “pseudo-objects” by allowing to perform method calls on them. [...] Note that this isn’t far off dreaming, but something that already exists right now. The scalar objects PHP extension allows you to define methods for the primitive PHP types. The introduction of method-call support for primitive types comes with a number of advantages.
Among the advantages he lists:
- The opportunity for a cleaner API (instead of the current, sometimes oddly named functions)
- Improved readability
- Polymorphism through a "cleaning up" of shared methods
- Loose Typing
He also looks at possible ways that other primitive types could be handled (like "null" or "float") and some of the problems that could come up when passing objects around. Since the values could be an object or scalar, how would you know the difference. He finishes off the post with a look at the current state of things, including that there's not much resistance just that there hasn't been a good API defined to make it work.