1. Слинкованное свойство с таким железом как 1-Wire, Z-Wave и т.п.
2. Внешние GET. Например Ардуино, MegaD, Ewclid ... В общем все то, что отправляет строку вида http://<ip_server>/objects/?object=FireSensors1&op=m&m=statusChanged&status=0 или работает через командную строку.
Но нам также нужно сразу знать, когда меняется свойств у объекта. Во втором случае все понятно. Запускается метод statusChanged. А в первом варианте можно использовать только запуск метода по изменению свойства. И для слинкованных датчиков сюда тоже очень хорошо подходит statusChanged. Но класс то один, и правила общие. Как быть? Заводить второй класс, чтобы были разные для слинкованных и не слинкованных датчиков? Это вариант, но мне не нравится.
Делать второй метод ChangeStatus? можно, и так у меня было до недавнего времени.
А что если все объединить? Выставить запуск метода statusChanged при изменении свойства Status, а код statusChanged завершать если Status передан параметром.
Код: Выделить всё
if (isset($params['status'])) {
$this->setProperty('status',$params['status']);
return;
}
Какое будет мнение общества?