使用 CONST 設定上限和下限
如果您的程式碼接受使用者輸入,或者您只是需要確保輸入是可接受的,您可以使用常數來設定上限和下限。注意:強烈建議使用一個強制執行限制的靜態函式… 可以參考下面的 clamp() 函式範例。
<?php
class Dimension
{
const MIN = 0, MAX = 800;
public $width, $height;
public function __construct($w = 0, $h = 0){
$this->width = self::clamp($w);
$this->height = self::clamp($h);
}
public function __toString(){
return "Dimension [width=$this->width, height=$this->height]";
}
protected static function clamp($value){
if($value < self::MIN) $value = self::MIN;
if($value > self::MAX) $value = self::MAX;
return $value;
}
}
echo (new Dimension()) . '<br>';
echo (new Dimension(1500, 97)) . '<br>';
echo (new Dimension(14, -20)) . '<br>';
echo (new Dimension(240, 80)) . '<br>';
?>
- - - - - - - -
Dimension [width=0, height=0] - 預設大小
Dimension [width=800, height=97] - 寬度已被限制為最大值
Dimension [width=14, height=0] - 高度已被限制為最小值
Dimension [width=240, height=80] - 寬度和高度未變
- - - - - - - -
在您的類別中設定上下限也有助於讓您的物件更有意義。例如,Dimension 的寬度或高度不可能是負數。您有責任防止虛假輸入損壞您的物件,並避免程式碼其他部分發生潛在的錯誤和例外。