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();
}
?>

Reply via email to