Hi,
While debugging some memory usage stuff I came across the fact that:
<?php
class foo {
// $x as a static *class* var
static $x = "foo";
static function def() {
return self::$x;
}
}
$x1 = foo::def();
$x2 = foo::def();
$x3 = foo::def();
$x4 = foo::def();
xdebug_debug_zval('x4');
?>
will display a refcount of 5 while:
<?php
class foo {
static function def() {
// $x as a static *function* var
static $x = "foo";
return $x;
}
}
$x1 = foo::def();
$x2 = foo::def();
$x3 = foo::def();
$x4 = foo::def();
xdebug_debug_zval('x4');
?>
will display a refcount of 1.
Can someone explain me why a real copy is made in the 2nd case?
Is this on purpose?
Regards,
--
Patrick Allaert
---
http://code.google.com/p/peclapm/ - Alternative PHP Monitor
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php