0

I'm not sure if I understand properties() method right It's pulling out values from $db_table_fields and making them keys in array $properties and also assigning them as values of the same array...?

don't want just to copy/paste code trying to understand it..

class User{

    protected static $db_table = "users";
    protected static $db_table_fields = array('username','password','first_name','last_name');
    public $id;
    public $username;
    public $password;    
    public $first_name;
    public $last_name;

    protected function properties(){
        $properties = array();
        foreach(self::$db_table_fields as $db_field ){
            if(property_exists($this,$db_field)){
                $properties[$db_field] = $this->$db_field;
            }
        }
        return $properties;
    }

}
Barmar
  • 741,623
  • 53
  • 500
  • 612
Xigo
  • 29
  • 9

2 Answers2

1

It's creating an associative array whose elements correspond to selected properties of the object. The array $db_table_fields lists those properties. It then loops through that array and checks whether $this contains a property with each name. If the property exists, it adds an entry to the $properties array whose key is the property name, and whose value is the property value. This is the critical line:

$properties[$db_field] = $this->$db_field;

$properties[$db_field] = means to create an element of the $properties array whose key is $db_field (the current element of the loop). And $this->$db_field uses $db_field as a property name to access in the current object.

Barmar
  • 741,623
  • 53
  • 500
  • 612
0

It's creating what is called an 'associative array'. This means that the array is indexed using a string key instead of a numerical index.

For more information, check out the documentation for Arrays: Arrays in PHP

Justin Pearce
  • 4,994
  • 2
  • 24
  • 37