In PHP5 there exists engine level object overloading for variables via the __get() and __set() accessors.

<?php
class DBM {
    private 
$members;
    private 
$file;

    function 
__construct($file) {
        
$this->file $file;
        
$this->members = @unserialize(
            
file_get_contents($file)
        );
    }

    function 
__get($name) {
        return 
$this->members[$name];
    }

    function 
__set($name$value) {
        
$this->members[$name] = $value;
    }

    function 
__destruct() {
        
$f fopen($this->file,'w');
        
fwrite($f,serialize($this->members));
        
fclose($f);
    }
}

$dbm = new DBM(
    
'./presentations/slides/php5intro/db'
);

echo 
"Hello {$dbm->name}!\n";
$dbm->name 'Sterling';
?>
Output
Hello !