Запускать метод при изменении

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Запускать метод при изменении

Сообщение PAV » Вт окт 28, 2014 11:38 am

Вопрос, а можно при изменении свойства запускать метод КЛАССА? Не объекта, а прямо целиком класса.
Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Re: Запускать метод при изменении

Сообщение Vit » Вт окт 28, 2014 1:24 pm

PAV писал(а):Вопрос, а можно при изменении свойства запускать метод КЛАССА? Не объекта, а прямо целиком класса.
Можно. Галочку поставьте в настройках метода
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Запускать метод при изменении

Сообщение PAV » Вт окт 28, 2014 2:50 pm

Не поняли. Есть методы sens1.action sens2.action
При изменении любого свойства (пусть sens1.status) я ставлю - запустить метод. Но мне бы хотелось, чтобы выполнился общий метод класса, а не метод какого-то объекта.
Например в методе класса sens у меня - записать время обновления, сказать привет. В методе sens1.action - сказать привет1, sens2.action привет2.
Вот мне нужно, чтобы выполнилось только (записать время обновления, сказать привет)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Запускать метод при изменении

Сообщение sergejey » Вт окт 28, 2014 8:07 pm

Нет, код из метода класса вызывается только (но не обязательно) при вызове метода объекта. Отдельно вызывать метод класса нельзя. Да и нелогично это как-то.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Запускать метод при изменении

Сообщение PAV » Пн ноя 10, 2014 12:16 pm

Неправильно спросил. Надо было так - как запустить общий метод объекта?
Вписывать метод без указания объекта.
Например просто statusChanged, тогда будет выполняться родительский метод.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Запускать метод при изменении

Сообщение sergejey » Пн ноя 10, 2014 12:55 pm

Боюсь, что ответ тот же -- общий метод без указания объекта запустить нельзя. Если в методе класса какие-то действия, которые к объекту не привязаны, то можно "выкрутиться" так: сделать сценарий вне класса и из метода класса его запускать. а при необходимости просто запускать сценарий и тогда получится, что один и тот же код используется и там и там.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
PAV
Сообщения: 968
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 71 раз
Поблагодарили: 95 раз

Re: Запускать метод при изменении

Сообщение PAV » Пн ноя 10, 2014 4:43 pm

Так я запустил, можно ;)
Есть общий метод класса sensorTemp - aliveChanged, где прописано что-то типа

Код: Выделить всё

if ($this->getProperty("alive")==0){ 
runScript('Alarm');
say("Внимание! Отключился датчик". " ". $this->getProperty('Name'), 2);
}
В свойстве класса alive ставим галку на выполнение метода (aliveChanged - без указания объекта) при изменении.
Теперь при изменении alive объекта sensorTemp1 $this->getProperty("alive") будет равносильно sensorTemp1.alive
при sensorTemp2 sensorTemp1.alive и т.д.

То, что было нужно.
Ответить