#45910 [Asn->Csd]: Cannot declare self-referencing constant
| From: | dmitry@php.net | Date: | Tue, 26 Aug 2008 08:38:46 +0000 |
| Subject: | #45910 [Asn->Csd]: Cannot declare self-referencing constant | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-128413@lists.php.net to get a copy of this message | ||
ID: 45910
Updated by: dmitry@php.net
Reported By: s dot tretter at szene1 dot at
-Status: Assigned
+Status: Closed
Bug Type: Scripting Engine problem
Operating System: Linux
PHP Version: 5.3.0alpha1
Assigned To: dmitry
New Comment:
This bug has been fixed in CVS.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Previous Comments:
------------------------------------------------------------------------
[2008-08-25 19:58:46] felipe@php.net
I've added two tests (bug45910.phpt, bug45910_2.phpt), the latter
segfaults. (5_3 and HEAD)
------------------------------------------------------------------------
[2008-08-25 19:28:11] felipe@php.net
Here's a simple script based in your example:
class foo {
const AAA = 'x';
const BBB = 'a';
const CCC = 'a';
const DDD = self::AAA;
private static $foo = array(
self::BBB => 'a',
self::CCC => 'b',
self::DDD => self::AAA
);
public static function test() {
self::$foo;
}
}
foo::test();
The error is only issued when BBB and CCC contains same value.
------------------------------------------------------------------------
[2008-08-25 18:34:38] s dot tretter at szene1 dot at
okay here a test script...
<?php
class Test
{
const HOST_SK = 13;
const NOSHOW = 'n77';
const CONTENT_AD = 'n10';
const CONTENT_AD_MAIN = 'n5';
const CONTENT_AD_SALE = 'n15';
const SKYSCRAPER = 'n4';
const SITEBAR = 'n6';
const BIGSIZE_BANNER = 'n3';
const CONTENT_USERPAGE = self::NOSHOW;
const HOCKEY1_SKYSCRAPER = 'n4';
const HOCKEY2_BIGSIZE_BANNER = 'n3';
const SPECIAL_FOTO_SKYSCRAPER = 'n14';
private static $host_matching = array(
self::HOST_SK => array(
self::CONTENT_AD
=> 'n64',
self::CONTENT_AD_MAIN
=> 'n63',
self::CONTENT_AD_SALE
=> 'n65',
self::SKYSCRAPER
=> 'n62',
self::SITEBAR
=> 'n66',
self::BIGSIZE_BANNER
=> 'n61',
self::HOCKEY1_SKYSCRAPER
=> 'n62',
self::HOCKEY2_BIGSIZE_BANNER
=> 'n61',
self::SPECIAL_FOTO_SKYSCRAPER
=> 'n67',
self::CONTENT_USERPAGE
=> self::NOSHOW
)
);
public static $objects = array();
public static function addElement($object)
{
self::$objects[] = $object;
}
}
Test::addElement("socha");
?>
------------------------------------------------------------------------
[2008-08-25 18:10:42] s dot tretter at szene1 dot at
Description:
------------
The problem is that the same script worked in php5.2.6, but in php5.3
it results in a "Fatal error: Cannot declare self-referencing constant
'n61' in ..."
There is an array that uses many constants to set the array with
values. If I execute a method of the class this error message stops the
execution..but the line of the code has nothing todo with this array!
strange error... just let me send my test code, u will see it yourself.
If i modify the array, remove the lines that php is complain about,
some lines and so on.. it works.. but these lines are not differnt to
the ohter lines..!? I don't understand it.
Also tried with latest cvs snapshot
Reproduce code:
---------------
I have a test script, but I don't wanna publish the code... May I send
it directly to a php developer?
Expected result:
----------------
like in php5.2.6 this code should work!
Actual result:
--------------
Fatal error: Cannot declare self-referencing constant 'n61' in
/..../test.php on line 132
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=45910&edit=1