Property access handlers combined with 'private' can be used as a replacement for dynamic properties.

<?php
class OSses {
    private 
$names = array();

    public function 
__set($name$value) {
        if (!
in_array($name, array('windows''dos')))
            
$this->names[$name] = $value;
    }

    public function 
getNames() {
        return 
$this->names;
    }
}

$osses = new OSses();
$osses->linux 'rocks';
$osses->windows 'blows';

var_dump($osses->getNames());
?>
array(1) { ["linux"]=> string(5) "rocks" }