Запускать метод при изменении
Модератор: immortal
-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Запускать метод при изменении
Вопрос, а можно при изменении свойства запускать метод КЛАССА? Не объекта, а прямо целиком класса.
-
- Сообщения: 867
- Зарегистрирован: Вт янв 17, 2012 12:31 pm
- Благодарил (а): 121 раз
- Поблагодарили: 78 раз
Re: Запускать метод при изменении
Можно. Галочку поставьте в настройках методаPAV писал(а):Вопрос, а можно при изменении свойства запускать метод КЛАССА? Не объекта, а прямо целиком класса.
-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Запускать метод при изменении
Не поняли. Есть методы sens1.action sens2.action
При изменении любого свойства (пусть sens1.status) я ставлю - запустить метод. Но мне бы хотелось, чтобы выполнился общий метод класса, а не метод какого-то объекта.
Например в методе класса sens у меня - записать время обновления, сказать привет. В методе sens1.action - сказать привет1, sens2.action привет2.
Вот мне нужно, чтобы выполнилось только (записать время обновления, сказать привет)
При изменении любого свойства (пусть sens1.status) я ставлю - запустить метод. Но мне бы хотелось, чтобы выполнился общий метод класса, а не метод какого-то объекта.
Например в методе класса sens у меня - записать время обновления, сказать привет. В методе sens1.action - сказать привет1, sens2.action привет2.
Вот мне нужно, чтобы выполнилось только (записать время обновления, сказать привет)
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Запускать метод при изменении
Нет, код из метода класса вызывается только (но не обязательно) при вызове метода объекта. Отдельно вызывать метод класса нельзя. Да и нелогично это как-то.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Запускать метод при изменении
Неправильно спросил. Надо было так - как запустить общий метод объекта?
Вписывать метод без указания объекта.
Например просто statusChanged, тогда будет выполняться родительский метод.
Вписывать метод без указания объекта.
Например просто statusChanged, тогда будет выполняться родительский метод.
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Запускать метод при изменении
Боюсь, что ответ тот же -- общий метод без указания объекта запустить нельзя. Если в методе класса какие-то действия, которые к объекту не привязаны, то можно "выкрутиться" так: сделать сценарий вне класса и из метода класса его запускать. а при необходимости просто запускать сценарий и тогда получится, что один и тот же код используется и там и там.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Запускать метод при изменении
Так я запустил, можно 
Есть общий метод класса sensorTemp - aliveChanged, где прописано что-то типа
В свойстве класса alive ставим галку на выполнение метода (aliveChanged - без указания объекта) при изменении.
Теперь при изменении alive объекта sensorTemp1 $this->getProperty("alive") будет равносильно sensorTemp1.alive
при sensorTemp2 sensorTemp1.alive и т.д.
То, что было нужно.

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