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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: rl at wlp dot de
New email:
PHP Version: OS:

 

 [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: Mon Jun 22 07:00:02 2026 UTC