When passing data from an array to a class constructor in PHP, what are the best practices for ensuring that the data is properly interpreted and utilized by the class?

When passing data from an array to a class constructor in PHP, it's important to properly validate and sanitize the data to ensure it is correctly interpreted and utilized by the class. One approach is to use type hinting and validation checks within the constructor to ensure the incoming data meets the expected format and requirements.

class MyClass {
    private $data;

    public function __construct(array $data) {
        if(isset($data['key1']) && isset($data['key2'])) {
            $this->data = [
                'key1' => $data['key1'],
                'key2' => $data['key2']
            ];
        } else {
            throw new InvalidArgumentException('Invalid data format provided');
        }
    }
}

// Example usage
$data = ['key1' => 'value1', 'key2' => 'value2'];
$myClass = new MyClass($data);