#35050 [Opn-Asn]: PHP 5 do not recognize Capital I letters in function and class method names
ID: 35050 Updated by: [EMAIL PROTECTED] Reported By: satanistlav at mail dot ru -Status: Open +Status: Assigned Bug Type: Scripting Engine problem Operating System: Linux PHP Version: 5.0.5 -Assigned To: +Assigned To: dmitry New Comment: I can reproduce this with the following short script: ?php class foo { function IsHere() { echo here\n; } } echo setlocale(LC_ALL, 'tr_TR'), \n; $f = new foo(); $f-IsHere(); ? (You need to have the tr_TR locale installed for this). It does work properly with PHP 5.1 actually, and it has to to with the zend_str_tolower() function which uses the tolower() libc call, which uses the locale. As in Turkish the I does not lowercase to i you can get weird things. This is why we should get rid of case insensitive function names. It also works with normal function names (instead of classes' methods) Previous Comments: [2005-11-01 15:02:31] satanistlav at mail dot ru http://www.yda.com.tr/info.php [2005-11-01 14:57:02] [EMAIL PROTECTED] What is your locale set to? Can you provide a link to phpinfo() output? [2005-11-01 14:45:44] satanistlav at mail dot ru Description: The Linux hosting server I use recently upgraded PHP Version to 5.0.4. After upgrade all function and and class methods those had capital I letter in the function names became unrecognized by PHP. No such problem I had in previouse version of PHP, and no problem in my local server (WinXP, Apache 2, PHP v5.0.5) Reproduce code: --- //Part of mail class . /** * Sets Mailer to send message using SMTP. * @return void */ function IsSMTP() { $this-Mailer = smtp; } /** * Sets Mailer to send message using PHP mail() function. * @return void */ function IsMail() { $this-Mailer = mail; } . /* I used class methods ***/ . $mailer-IsHtml(true); $mailer-IsMail(); . Expected result: Execution of class method is expected Actual result: -- /* I got error / Fatal error: Call to undefined method PHPMailer::IsHtml() in -- Edit this bug report at http://bugs.php.net/?id=35050edit=1
#35050 [Opn-Asn]: PHP 5 do not recognize Capital I letters in function and class method names
ID: 35050 Updated by: [EMAIL PROTECTED] Reported By: satanistlav at mail dot ru -Status: Open +Status: Assigned Bug Type: Scripting Engine problem Operating System: Linux -PHP Version: 5.0.5 +PHP Version: 5CVS Assigned To: dmitry New Comment: Actually, PHP 5.1 gives the same broken result... but it works in 4.4. Yes, we confirm there is a bug here - not sure how to fix it though) Assigning to Dmitry for now. (Please don't switch the bug back to Open) Previous Comments: [2005-11-01 15:17:54] satanistlav at mail dot ru I have uploaded your code to the server and I still have the same error! http://www.yda.com.tr/test.php [2005-11-01 15:14:14] satanistlav at mail dot ru I have multilingual site. Locales are set to en_US.ISO-8859-1 in Enlgish side of the site and tr_TR.ISO-8859-9 in Turkish for LC_ALL [2005-11-01 15:12:29] [EMAIL PROTECTED] I can reproduce this with the following short script: ?php class foo { function IsHere() { echo here\n; } } echo setlocale(LC_ALL, 'tr_TR'), \n; $f = new foo(); $f-IsHere(); ? (You need to have the tr_TR locale installed for this). It does work properly with PHP 5.1 actually, and it has to to with the zend_str_tolower() function which uses the tolower() libc call, which uses the locale. As in Turkish the I does not lowercase to i you can get weird things. This is why we should get rid of case insensitive function names. It also works with normal function names (instead of classes' methods) [2005-11-01 15:02:31] satanistlav at mail dot ru http://www.yda.com.tr/info.php [2005-11-01 14:57:02] [EMAIL PROTECTED] What is your locale set to? Can you provide a link to phpinfo() output? 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 http://bugs.php.net/35050 -- Edit this bug report at http://bugs.php.net/?id=35050edit=1