Is there a way to create a new property via PHP 5.2.4? I get a hash back from an authentication server. I'm not guaranteed that someone in another department won't add new key/values to the returned hash/array. I'm trying to work around that part gracefully so that the code doesn't blow up on a customer in such an event. The main try/catch will suppress errors already, but I thought it would be nice to be able to handle this stuff automatically rather than constantly updating a User.class.php file all the time. "creating new property this->oraclecustomerid with 1122" but when I try to set the value with the $this->$pkey = $value; It triggers __call() which then triggers __set() which throws my BadProperty exception. How come $this->$pkey = $value isn't creating/setting a property? Or how do I do something like create_property($this, $pkey); so that I can then set it via $this->oraclecustomerid = 1122 or $this->set_oraclecustomerid(1122) ??? <?php function load_from_user_data($user_data) { //now loop through the rest of the user_data array and assign via a set_foo() method foreach ($user_data as $key => $value) { //try { $pkey = strtolower($key); //[dv] this is sort of a hack to "automatically" create a new property/variable // for 'new' hashes key/values we may not know about. // It's really designed to supress errors and they really should be added to this User.class.php properly. if ( !property_exists($this, $pkey) ) { echo "creating new property this->$pkey with $value<br>\n"; $this->$pkey = $value; //THIS BLOWS UP ON THE __set() echo "this->$pkey = ".$this->$pkey; } else { $class_variable = 'set_'.$pkey; $this->$class_variable($value); unset($user_data[$key]); } } //catch (Exception $e) { //echo $e->getMessage()."\n"; } } //should new fields be returned in the $user_data that are not accounted for above... if ($_SESSION['DEVELOPMENT'] && count($user_data)) { echo "<!-- Unaccounted for user_data hashes. Please add these into User.class.php:\n"; var_dump($user_data); echo "-->"; } //THESE TWO LINES FATAL ERROR ON THE __get(): echo "this->oraclecustomerid = ".$this->oraclecustomerid; echo "this->get_oraclecustomerid() = ".$this->get_oraclecustomerid(); } ?>