Edit report at https://bugs.php.net/bug.php?id=45910&edit=1
ID: 45910 Comment by: semnanweb at gmail dot com Reported by: s dot tretter at szene1 dot at Summary: Cannot declare self-referencing constant Status: Closed Type: Bug Package: Scripting Engine problem Operating System: Linux PHP Version: 5.3.0alpha1 Assigned To: dmitry Block user comment: N Private report: N New Comment: same problem on php 5.4.8 apc 1.3.13 http://stackoverflow.com/questions/13272981/cannot-declare-self-referencing-constant/ the bugs for apc. but i need apc. i must restart apache for working sometimes and then same error. restart after some times error and etc ... :( Previous Comments: ------------------------------------------------------------------------ [2008-08-26 08:38:45] dmi...@php.net 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. ------------------------------------------------------------------------ [2008-08-25 19:58:46] fel...@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] fel...@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 https://bugs.php.net/bug.php?id=45910&edit=1