What potential pitfalls should be avoided when designing a PHP class for measurement values, especially in terms of data validation?

When designing a PHP class for measurement values, it is important to ensure proper data validation to prevent errors and inconsistencies. One potential pitfall to avoid is not validating input data properly, which can lead to unexpected behavior or security vulnerabilities. To address this issue, implement data validation checks within the class methods to ensure that only valid measurement values are accepted.

class Measurement {
    private $value;

    public function __construct($value) {
        $this->validateValue($value);
        $this->value = $value;
    }

    private function validateValue($value) {
        if (!is_numeric($value) || $value < 0) {
            throw new InvalidArgumentException("Invalid measurement value");
        }
    }

    public function getValue() {
        return $this->value;
    }

    public function updateValue($newValue) {
        $this->validateValue($newValue);
        $this->value = $newValue;
    }
}

// Example usage
try {
    $measurement = new Measurement(10);
    echo $measurement->getValue(); // Output: 10

    $measurement->updateValue(20);
    echo $measurement->getValue(); // Output: 20

    $measurement->updateValue(-5); // This will throw an exception
} catch (InvalidArgumentException $e) {
    echo "Error: " . $e->getMessage();
}