Re: Adding a more logical string slicing function to PHP
| From: | Jacob Oettinger | Date: | Sat, 02 Apr 2011 11:38:10 +0000 |
| Subject: | Re: Adding a more logical string slicing function to PHP | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-51791@lists.php.net to get a copy of this message | ||
On Mar 31, 2011, at 21:10 , Rasmus Lerdorf wrote:
> On 03/31/2011 10:58 AM, Martin Scotta wrote:
>> I think it's time to stop thinking in terms of "functions" and move
>> forward to "abstractions"
>>
>> $s1 = 'string';
>> $s1->contains($s2);
>>
>> $s1->indexOf($s2) === strpos($s1, $s2);
>>
>> Why can't the strings be exposed as pseudo-objects ? users can choose to
>> use them as a regular strings or by calling methods on it.
>
> This is actually something I have been toying with a bit. Adding the
> ability to call methods on both strings and arrays. I still don't like
> the idea of making them real objects as the overhead and the amount of
> code that would need to be changed in the core and in every extension is
> daunting. Anybody out there have a patch along these lines?
Sounds interesting. A few thoughts:
The new "methods" could be implemented as functions that accept the string or array as
their first argument. Thereby allowing them to be called as functions too.
If the new methods are functions. Maybe they should be defined in the \string and \array namespaces.
This would allow a fresh start in naming string and array functions, and allow addressing argument
ordering issues. It would of curse also open endless discussions on which functions to include and
the naming of these.
If the new string and array functions were defined in some namespaces. Would it be possible to allow
extending the string and array "classes" by defining more functions in those namespaces in
userland and/or extensions?
Should the new string functions be multibyte character set aware?
Should the above be generalized so that the -> operator can be used on any simple type, and if
the called "method" exists as a function in the types namespace, it should be called. This
would break the task into two parts. !) changing php to attempt calling functions in a certain
namespace for each simple type. 2) Writing extensions that create functions for each type, string
and/or array would be obvious starting points.