#46304 [Opn]: define() namespaced constant is case sensitive

From: Date: Wed, 15 Oct 2008 15:33:34 +0000
Subject: #46304 [Opn]: define() namespaced constant is case sensitive
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-129723@lists.php.net to get a copy of this message
ID: 46304 User updated by: kenashkov at gmail dot com Reported By: kenashkov at gmail dot com Status: Open Bug Type: Scripting Engine problem Operating System: GNU/Linux debian lenny PHP Version: 5.3CVS-2008-10-15 (snap) New Comment: I had a quick look again over the docs and nowhere is documented that the namespaces are case insensitive. I think this should go in the docs, as well if this issue with define() wont be fixed, to be documented too. Previous Comments: ------------------------------------------------------------------------ [2008-10-15 15:29:42] kenashkov at gmail dot com Description: ------------ The current implementatino of namespaces is case INSENSITIVE. But defining a constant using define and having capitals in the namespace makes the defined constant unreachable. We can verify this using get_defined_constants(). In case a constant was defined like: <? namespace NS1::ns2; const const1; ?> we can see the the defined constant/namespace is in fact: ns1::ns2::const1; But if the constant was defined using define(), it is kept with the capitalization: <? define('NS1::ns2::const1','value'); ?> get_defined_constants() gives NS1::ns2::const1. But because the namespaces are case insensitive the call: <? print NS1::ns2::const1; ?> resolves in fact to ns1::ns2::const1 which is undefined. Reproduce code: --------------- <? define('NS1::ns2::const1','value'); print NS1::ns2::const1;//error //print ns1::ns2::const1;//would give error too ?> Expected result: ---------------- value Actual result: -------------- Fatal error: Class 'NS1::ns2' not found in /home/local/tests/t35.php on line 3 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=46304&edit=1

« previous php.bugs (#129723) next »