Edit report at https://bugs.php.net/bug.php?id=18556&edit=1
ID: 18556 Comment by: wim at powerassist dot nl Reported by: spud at nothingness dot org Summary: Setting locale to 'tr_TR' lowercases class names Status: Assigned Type: Bug Package: Scripting Engine problem Operating System: Linux (RedHat 7.2) PHP Version: 5CVS, 4CVS (2005-10-04) Assigned To: dmitry Block user comment: N Private report: N New Comment: Why is this bug still not fixed? Not only class names are affected but function names aswell: <?php setlocale(LC_ALL, 'tr_TR.UTF-8'); class InfoBlob { public static function Intresting() { return 'is it not?'; } } echo (infoBlob::intresting()); // works lowercase i function and class. echo (infoBlob::Intresting()); // fails uppercase i function echo (InfoBlob::intresting()); // fails uppercase i class ?> Previous Comments: ------------------------------------------------------------------------ [2011-12-07 20:13:24] cankoy at ymail dot com > This will probably break a lot of existing PHP Code. Existing code is already broken for those suffering from this problem, don't you get it? I'm not suggesting a permanent turn-off, I'm suggesting a command-line option/a php.ini directive/whatever fits the design of Php engine to implement this as an option. > Why not performing the lookup case-sensitive and if not found fall back to > case-insensitive? And if found case-insensitive throw a deprecation warning. You're suggesting more ceremony, where I suggest optionally skipping a ceremony. Php is an interpreter, performance is important. ------------------------------------------------------------------------ [2011-12-07 20:01:07] gerd dot katzenbeisser at gmail dot com This will probably break a lot of existing PHP Code. Why not performing the lookup case-sensitive and if not found fall back to case-insensitive? And if found case- insensitive throw a deprecation warning. ------------------------------------------------------------------------ [2011-12-07 18:01:37] cankoy at ymail dot com This, practically, can't be fixed. Mainly because there's no way to know if 'I' is uppercase of 'i' or 'ı' since there's not a separate place for Turkish 'I' in code tables. The same holds for 'i' (can't be known if it's lowercase of 'I' or 'İ'). I told 2 years ago and will say it again: PHP should provide a way to turn off case-insensitive function/class name lookup. No good programmer uses this Basic language feature since identifiers are case-sensitive in all real languages like Python, Ruby, C#, Java. ------------------------------------------------------------------------ [2011-12-03 22:08:24] sg at facelift-bbt dot com This bug was first reported 9 years ago? This definetly got to be fixed. This is a total stopper. I can reproduce it exactly it is shown below. ------------------------------------------------------------------------ [2011-11-06 19:29:44] gerd dot katzenbeisser at gmail dot com here is a simple test case using the internal class PharFileInfo <? $class = 'PharFileInfo'; echo 'Locale: '.setlocale(LC_ALL, '0')."\n"; echo "$class exists? ".var_export(class_exists($class), true)."\n"; echo 'Locale: '.setlocale(LC_ALL, 'tr_TR.UTF-8')."\n"; echo "$class exists? ".var_export(class_exists($class), true); ?> Output: Locale: C PharFileInfo exists? true Locale: tr_TR.UTF-8 PharFileInfo exists? false ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=18556 -- Edit this bug report at https://bugs.php.net/bug.php?id=18556&edit=1