#17537 [Csd]: get_class_vars works unexpected
| From: | nandi-nospam1 at harem dot dev dot hu | Date: | Sun, 22 Feb 2004 19:54:48 +0000 |
| Subject: | #17537 [Csd]: get_class_vars works unexpected | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969359147@lists.php.net to get a copy of this message | ||
ID: 17537
User updated by: nandi-nospam1 at harem dot dev dot hu
-Reported By: mrbrush at harem dot dev dot hu
+Reported By: nandi-nospam1 at harem dot dev dot hu
Status: Closed
Bug Type: Documentation problem
Operating System: Linux 2.4.
PHP Version: 4.2.1
New Comment:
The documentation says that the get_class_vars() method should return
an
array only with the properties wich had DEFAULT values already at
class
definition. That worked fine with PHP 4.1.2 but it's behavior changed
with PHP 4.2.[0 or 1] because it displays also those properties which
has no default values at definition. I don't really think that this is
a
bug, but it seems that there was a change in the function behavior and
neither the changelog nor the documentation mentions a word about this
change.
Example - the following script from the docs:
<?php
class myclass {
var $var1; // this has no default value...
var $var2 = "xyz";
var $var3 = 100;
// constructor
function myclass() {
return(true);
}
}
$my_class = new myclass();
$class_vars = get_class_vars(get_class($my_class));
echo "<pre>";
foreach ($class_vars as $name => $value) {
echo "$name : $value\n";
}
echo "</pre>";
?>
should outuput something like this:
var2 : xyz
var3 : 100
but the result in PHP 4.2.1 is:
var1 :
var2 : xyz
var3 : 100
Previous Comments:
------------------------------------------------------------------------
[2004-02-22 14:53:38] mrbrush at harem dot dev dot hu
The documentation says that the get_class_vars() method should return
an
array only with the properties wich had DEFAULT values already at
class
definition. That worked fine with PHP 4.1.2 but it's behavior changed
with PHP 4.2.[0 or 1] because it displays also those properties which
has no default values at definition. I don't really think that this is
a
bug, but it seems that there was a change in the function behavior and
neither the changelog nor the documentation mentions a word about this
change.
Example - the following script from the docs:
<?php
class myclass {
var $var1; // this has no default value...
var $var2 = "xyz";
var $var3 = 100;
// constructor
function myclass() {
return(true);
}
}
$my_class = new myclass();
$class_vars = get_class_vars(get_class($my_class));
echo "<pre>";
foreach ($class_vars as $name => $value) {
echo "$name : $value\n";
}
echo "</pre>";
?>
should outuput something like this:
var2 : xyz
var3 : 100
but the result in PHP 4.2.1 is:
var1 :
var2 : xyz
var3 : 100
------------------------------------------------------------------------
[2002-11-15 04:41:19] philip@php.net
This is now documented. The change can be seen in here:
http://cvs.php.net/cvs.php/phpdoc/en/reference/classobj/functions/get-class-vars.xml
As of PHP 4.2.0, all are shown.
------------------------------------------------------------------------
[2002-05-31 02:45:57] derick@php.net
Reclassify as doc problem
------------------------------------------------------------------------
[2002-05-30 21:08:01] nandi-nospam1 at harem dot dev dot hu
The documentation says that the get_class_vars() method should return
an array only with the properties wich had DEFAULT values already at
class definition. That worked fine with PHP 4.1.2 but it's behavior
changed with PHP 4.2.[0 or 1] because it displays also those properties
which has no default values at definition. I don't really think that
this is a bug, but it seems that there was a change in the function
behavior and neither the changelog nor the documentation mentions a
word about this change.
Example - the following script from the docs:
<?php
class myclass {
var $var1; // this has no default value...
var $var2 = "xyz";
var $var3 = 100;
// constructor
function myclass() {
return(true);
}
}
$my_class = new myclass();
$class_vars = get_class_vars(get_class($my_class));
echo "<pre>";
foreach ($class_vars as $name => $value) {
echo "$name : $value\n";
}
echo "</pre>";
?>
should outuput something like this:
var2 : xyz
var3 : 100
but the result in PHP 4.2.1 is:
var1 :
var2 : xyz
var3 : 100
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=17537&edit=1