Php Magic Method __get __set — как установить границы для определенных полей, но не для других

У меня есть класс полностью частных переменных; только определенные переменные будут нуждаться в проверке данных при входе.

Прямо сейчас у меня есть:

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;
}
}
}

Что если я хочу проверить данные на двух долларах, а просто вернуть один и три доллара без какой-либо проверки данных?
Я спрашиваю об этом, потому что в моем классе намного больше переменных, чем это, и я ненавижу писать отдельные наборы и методы get для каждого свойства класса, когда только некоторые из них требуют определенного поведения.

2

Решение

Я понял это с помощью @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;
}
}

Это позволяет делегировать определенные поля для проверки, но возвращает другие как есть.
Это полезно, потому что мне не нужно писать геттеры и сеттеры вручную.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]