Php Magic Method __get __set - 如何在特定字段上设置边界而不是其他字段

Php Magic Method __get __set - how to set boundaries on specific fields but not others

我有 class 个完全私有的变量;只有某些变量需要在输入时进行一些数据验证。

现在我有:

public class Example 
{
    //**** Variables / Properties ****/
    private $one;
    private $two; 
    private $three;

    //**** getter **** // 
    public function __get( $property ) 
    {
        if(property_exists($this,$property) { 
             return $this->$property;
        }
    }

    // **** setter **** //
    public function __set($property, $value) 
    {
         if(property_exists($this,$property)) {
            $this->$property = $value;
         }
    }
}

如果我想对 $two 进行数据验证,但只有 return $one 和 $three 没有任何数据验证怎么办?
我问这个是因为我的 class 有比这更多的变量,我讨厌为 class 的每个 属性 编写单独的 set 和 get 方法,因为只有其中一些需要特定的行为。

我在@JohnConde 的帮助下弄明白了。

首先在数组中声明哪些字段需要校验

private $dateArr = array("two");

然后

public function __set($property,$value) {
    if(property_exists($this,$property)) {
         foreach($dateArr as $dateProperty) {
              if($property == $dateProperty) {
                    cleanDate($property,$value);
                    return;
                  }
            }
                return $this->$property;
      }
}

这样做是委托特定字段进行验证,但 returns 其他字段照原样。
这很有用,因为我不必手动编写 getter 和 setter。