Bug #10801 Updated: Variable Variables and Constants

From: Date: Thu, 10 May 2001 23:26:08 +0000
Subject: Bug #10801 Updated: Variable Variables and Constants
Groups: php.dev 
Request: Send a blank email to php-dev+get-54807@lists.php.net to get a copy of this message
ID: 10801 User Update by: mstearne@entermix.com Status: Bogus Bug Type: Variables related Operating system: Linux 2.2 PHP Version: 4.0.4 Description: Variable Variables and Constants Cool. That's it. Hmm, maybe you should classify this bug as RTFM. :-) Previous Comments: --------------------------------------------------------------------------- [2001-05-10 19:19:12] cynic@php.net there _is_ such an interface: http://php.net/manual/en/function.constant.php --------------------------------------------------------------------------- [2001-05-10 19:13:10] mstearne@entermix.com I'm not trying to change the constant value, but there should be an interface for referencing constants similar to how variables can be added. If I have constants called: MY_CONSTANT_1 and MY_CONSTANT_2 I should be about to form a variable that reference those names like: define("MY_CONST_1","database1"); define("MY_CONST_2","database2"); $prefix="MY_CONST_"; $whichConst="1"; $thisConst=$prefix.$whichConst."<BR>"; print $$thisConst; $whichConst="2"; $thisConst=$prefix.$whichConst; print $$thisConst; That would output: database1 database2 --------------------------------------------------------------------------- [2001-05-10 18:56:56] cynic@php.net it's variable variables, not variable constants. what bug are you reporting? I haven't noticed. --------------------------------------------------------------------------- [2001-05-10 18:11:18] mstearne@entermix.com Variable variables techniques do not work when one of the "variables" is a constant. The example below illustrates this. This is probably the desired behavior for constants, but was confusing for me when I was trying to figure it out. The alternative I used was to add the variables I needed to the $GLOBALS array instead of defining them as constants. <?php define("DB_X_NAME","database1"); define("DB_Y_NAME","database2"); $DB_Z_NAME="database3"; function connectTo($databaseName){ global $DB_Z_NAME; $fullDatabaseName="DB_".$databaseName."_NAME"; return """.${$fullDatabaseName}."""; } print "DB_X_NAME is ".connectTo("X")." "; print "DB_Y_NAME is ".connectTo("Y")." "; print "DB_Z_NAME is ".connectTo("Z")." "; ?> --------------------------------------------------------------------------- Full Bug description available at: http://bugs.php.net/?id=10801

« previous php.dev (#54807) next »