Bug #14064 Updated: Arrays defined as object properties treat defined constants differently.
| From: | derick@php.net | Date: | Thu, 15 Nov 2001 07:20:34 +0000 |
| Subject: | Bug #14064 Updated: Arrays defined as object properties treat defined constants differently. | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-70515@lists.php.net to get a copy of this message | ||
ID: 14064
Updated by: derick
Reported By: andre@fscinternet.com
Old Status: Open
Status: Closed
Bug Type: Class/Object related
Operating System: i386-redhat-linux-gnu
PHP Version: 4.0.6
New Comment:
Seems to be fix in php-4.2.0dev, the (correct) output I get is:
Array
(
[1] => TEST1
[2] => TEST2
[3] => TEST3
)
test Object
(
[aTest2] => Array
(
[1] => TEST1
[2] => TEST2
[3] => TEST3
)
)
Previous Comments:
------------------------------------------------------------------------
[2001-11-14 17:38:33] andre@fscinternet.com
It appears that using defined constants to index an array within a class results in different
behaviour than arrays defined without.
Within a class, the array treats the constant as a string literal, whereas in a regular array
definition, the constant is properly evaluated.
Which of the two is the "correct" behaviour, and why do they differ between contexts? Is
there a way to get the results of Situation A in Situation B?
--(snip)--
<?php
define( 'TEST1', 1 );
define( 'TEST2', 2 );
define( 'TEST3', 3 );
// Situation A
$aTest = array(
TEST1 => 'TEST1',
TEST2 => 'TEST2',
TEST3 => 'TEST3'
);
print_r( $aTest );
#########################################################################
// Situation B
class Test
{
var $aTest2 = array(
TEST1 => 'TEST1',
TEST2 => 'TEST2',
TEST3 => 'TEST3'
);
}
$oTest = new Test;
print_r( $oTest );
?>
------------------------------------------------------------------------
Edit this bug report at http://bugs.php.net/?id=14064&edit=1