When returning reference to the object member which is instantiated inside the function, the object is destructed upon returning (which is a problem). It's easier to see the code:
<?php
class MemcacheArray {
public $data;
...
function &getData($file, $expire = 3600) {
$o = new MemcacheArray($file, $expire);
return $o->data;
}
?>
Here, destructor is called upon return() and the reference becomes a normal variable.
My solution is to store objects in a pool until the final exit(), but I don't like it. Any other ideas?
<?php
protected static $instances = array();
function &getData($file, $expire = 3600) {
$o = new MemcacheArray($file, $expire);
self::$instances[$file] = $o; return $o->data;
}
?>