Search code examples
phpclasspropertiesmutators

Can class default public variables be defined dynamically from an array in php?


I have a event class that i am using to insert/update data into my database. Is there a way that i can create the public variables from my db_fields array so that i am not having to duplicate the data?

This is my current structure which works...

class event{
    protected static $table_name='tName';
    protected static $db_fields = array('field1','field2','field3','field4','field5');

    public $field1;
    public $field2;
    public $field3;
    public $field4;
    public $field5;
}

I would like to have something like this..

class event{
    protected static $table_name='tName';
    protected static $db_fields = array('field1','field2','field3','field4','field5');

    function __construct() {
        create_public_vars_here($db_fields);
    }

}

Thanks!


Solution

  • You can try the following:

    class event{
    
        protected static $table_name='tName';
        protected static $db_fields = array('field1','field2','field3','field4','field5');
    
        function __construct() {
            foreach (self::$db_fields as $var) {
                $this->$var = $whateverDefaultValue;
            }
            // After the foreach loop, you'll have a bunch of properties of this object with the variable names being the string values of the $db_fiels.
            // For example, you'll have $field1, $field2, etc and they will be loaded with the value $whateverDefaultValue (probably want to set it to null).
        }
    
    }