php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #10801 Variable Variables and Constants
Submitted: 2001-05-10 18:11 UTC Modified: 2001-05-10 19:26 UTC
From: mstearne at entermix dot com Assigned:
Status: Not a bug Package: Variables related
PHP Version: 4.0.4 OS: Linux 2.2
Private report: No CVE-ID: None
 [2001-05-10 18:11 UTC] mstearne at entermix dot 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")."
";

?>

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-05-10 18:56 UTC] cynic@php.net
it's variable variables, not variable constants.
what bug are you reporting? I haven't noticed.
 [2001-05-10 19:13 UTC] mstearne at entermix dot 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 19:19 UTC] cynic@php.net
there _is_ such an interface:
http://php.net/manual/en/function.constant.php
 [2001-05-10 19:26 UTC] mstearne at entermix dot com
Cool.  That's it.  Hmm, maybe you should classify this bug
as RTFM.  :-)
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 12:01:27 2024 UTC