Re: RFC Posted for str_begins and str_ends functions

From: Date: Sat, 13 Aug 2016 02:29:18 +0000
Subject: Re: RFC Posted for str_begins and str_ends functions
References: 1 2 3 4 5 6  Groups: php.internals 
Request: Send a blank email to internals+get-95107@lists.php.net to get a copy of this message
On Fri, Aug 12, 2016 at 8:37 PM, <will@wkhudgins.info> wrote: > I've updated the RFC to reflect the discussion here and on github. You may > see it at > https://wiki.php.net/rfc/add_str_begin_and_end_functions . You > can see > the github PR at https://github.com/php/php-src/pull/2049 . > > The motivation for these changes was to maximize consistency between the > proposed functions and existing PHP string functions. The goal is to make > these functions feel natural and add functionality to the language without > cluttering it up. > Generally, +1. A few thoughts. First, the RFC refers to these working on "characters". I assume you mean ASCII characters and these actually work strictly on bytes. Working on "characters" would be more in-line for a multi-byte extension. Would you please clarify this point? Second, and related to the multi-byte issue: do the case insensitive versions honor case-folding in a multi-byte fashion? Either way, it's probably a good idea to separate the vote between the sensitive and insensitive versions because this is fundamentally a different, and perhaps more contentious, question. Third, perhaps these functions could provide more information than just yes/no. Return boolean TRUE if and only if the needle completely begins/ends the haystack, otherwise return INT representing the length in common. Yes, that'll probably be a trap for new developers who don't honor ===, but that could be illuminated in docs. Formally: boolean|int str_begin(string $needle, string $haystack) boolean|int str_end(string $needle, string $haystack) For example: str_begin('http://', 'http://example.com') === true str_begin('http://', 'https://example.com') === 4 Finally, since the RFC will fuel the final documentation, it might be a good idea to use needle/haystack terminology in the function signatures for some kind of consistency.

« previous php.internals (#95107) next »