|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2008-08-25 18:10 UTC] 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 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 07:00:01 2025 UTC |
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"); ?>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.