Re: Complete case-sensitivity in PHP

From: Date: Sun, 22 Apr 2012 08:49:46 +0000
Subject: Re: Complete case-sensitivity in PHP
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-60258@lists.php.net to get a copy of this message
On 4/21/2012 4:37 AM, Galen Wright-Watson wrote:
What about instead creating a special-purpose Zend function to normalize class names (zend_normalize_class_name, or zend_classname_tolower)? This function would examine the current locale and, if it's a problematic one, convert the string to lower case on its own (calling zend_tolower on non-problematic characters). Alternatively, zend_normalize_class_name could switch LC_CTYPE to an appropriate locale (e.g. "UTF-8"; the locale could be determined at compile time), call zend_str_tolower_copy, then switch back before returning. Then, any appropriate function (e.g. zend_resolve_class_name, zend_lookup_class_ex, class_exists, class_alias) would call zend_normalize_class_name instead of zend_str_tolower_copy/ zend_str_tolower_dup.
In plain words/pseudo-code, adding an "if statement" at a certain step should suffice, like: 1. lowercase the name; 2. if the effective locale is tr_XY, then replace every "ı" with "i"; 3. look up the name; For those who have nothing to do with Turkish locales, that should incur the overhead of an "if" condition only. But, I did not start this thread to discuss such bug fix, because: 1. It does not take a genius to figure it out, and should take minutes to implement for someone experienced in the internals. Given the 10 year span and dozens of comments/complaints on the bug's entry, it's hard to say this issue went unnoticed. So I had to conclude that such fix has quietly been overruled for performance and/or other undisclosed reasons. 2. Absent bug #18556, case-sensitive PHP has merits as I stated in other post and several people voiced opinions in favor. Case-sensitive PHP is worth considering.
Does this bug pop-up for locales other than Turkish, Azerbaijani and Kurdish ?
Theoretically, this problem occurs for any locales sharing a letter lowercase of which is different from each other's, and the PHP script changes its locale among these locales throughout its execution. best regards,

« previous php.internals (#60258) next »