php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #7835 define() doesn't work in a class-variable-predeclaration-function-call
Submitted: 2000-11-15 21:06 UTC Modified: 2000-11-15 21:37 UTC
From: rl at wlp dot de Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 4.0.3pl1 OS: Linux
Private report: No CVE-ID: None
 [2000-11-15 21:06 UTC] rl at wlp dot de
<?php
#  define_does_NOT_work.php --
#
#   testing defines in php4 within predeclaratrion 
#   function calls
#   
# tested on -
#   Apache/1.3.14 (Unix) mod_ssl/2.7.1 OpenSSL/0.9.6 
#   PHP/4.0.3pl1
#
# Author: Richard Leopold <rl@wlp.de>
# 
############################################################
##

define('__KEY__','this is the KEY');
define('__VALUE__','this is the VALUE');

class TEST {

   var $test = array( __KEY__ => __VALUE__ );

   function start() {
      $this->test = array( __KEY__ => __VALUE__ );
   }

   function test_define(){
      print "Looking for define-keyed array-value: test[".
            __KEY__."] = ".
            $this->test[__KEY__];
   }
}

$test = new TEST;

print("<b>Hello, this server is a </b><br><em>".
       $SERVER_SOFTWARE.
       "</em><br><br>I think there is a BUG in PHP4:</b>".
       "<br>\n");


print("<b>A define doesn't work in a class-variable ".
       "predeclaration array-function call ".
       "with a __defined__ Parameter .... </b><br>\n");

$test->test_define();

print("<br><br>".
      "<b>But when I initialize the class-variable in a ".
      "start-function ");

$test->start();

print(", then it works:</b><br>\n");

$test->test_define();

print("<br><br>".
      "<b>regards - Richard </b>");

?>


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2000-11-15 21:37 UTC] torben@php.net
Not a bug; check the manual:

  http://www.php.net/manual/language.oop.php

  Note: In PHP 4, only constant initializers for var 
  variables are allowed. Use constructors for non-constant 
  initializers.

The problem isn't with the defined constants; it's with
the array() being used in the 'var $test = array(...' line.
As noted, do this in the constructor inst
 
PHP Copyright © 2001-2026 The PHP Group
All rights reserved.
Last updated: Sun Jun 14 23:00:01 2026 UTC