PHP 4.0 Bug #7835 Updated: define() doesn't work in a class-variable-predeclaration-function-call
| From: | torben@php.net | Date: | Thu, 16 Nov 2000 02:37:46 +0000 |
| Subject: | PHP 4.0 Bug #7835 Updated: define() doesn't work in a class-variable-predeclaration-function-call | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-38290@lists.php.net to get a copy of this message | ||
ID: 7835
Updated by: torben
Reported By: rl@wlp.de
Status: Closed
Bug Type: Scripting Engine problem
Assigned To:
Comments:
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
Previous Comments:
---------------------------------------------------------------------------
[2000-11-15 21:06:18] rl@wlp.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>");
?>
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=7835