вызов метода при изменении свойства объекта

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

Модератор: immortal

olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: вызов метода при изменении свойства объекта

Сообщение olehs » Пт мар 15, 2019 1:28 pm

Ander писал(а):
Пт мар 15, 2019 1:26 pm
да это глюк импорта я с этим уже сталкивался, пришлите экспорт только class2
Вложения
class2.txt
(311 байт) 432 скачивания
Ander
Сообщения: 56
Зарегистрирован: Вс авг 27, 2017 9:20 pm
Благодарил (а): 7 раз
Поблагодарили: 0

Re: вызов метода при изменении свойства объекта

Сообщение Ander » Пт мар 15, 2019 1:30 pm

я понял почему у Вас работает, поставьте галочку Вызывать родительский метод: перед выполнением кода
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: вызов метода при изменении свойства объекта

Сообщение olehs » Пт мар 15, 2019 1:41 pm

понятно. почему так - не знаю. но если переопределить метод еще и в class2, то вызывается все по разу :o
За это сообщение автора olehs поблагодарил:
Ander (Пт мар 15, 2019 1:49 pm)
Рейтинг: 1.16%
Ander
Сообщения: 56
Зарегистрирован: Вс авг 27, 2017 9:20 pm
Благодарил (а): 7 раз
Поблагодарили: 0

Re: вызов метода при изменении свойства объекта

Сообщение Ander » Пт мар 15, 2019 1:47 pm

угу, про этот костыль я в начале написал. Сергея бы подключить похоже в objects.class.php собака зарыта
Ilfat
Сообщения: 44
Зарегистрирован: Пт июн 07, 2019 7:40 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: вызов метода при изменении свойства объекта

Сообщение Ilfat » Сб июн 08, 2019 8:44 pm

Доброго дня!
Направьте пожалуйста на путь истинный.
Имею класс "ESP_Mega"
У него есть свойство "ip"
и есть метод "ip_metod" (пока в таком виде):
--------------------------------------
$ip1 = gg("ESP1.ip1");
say("1й октет: ".gg("ESP1.ip1"));
$ip2 = gg("ESP1.ip2");
$ip3 = gg("ESP1.ip3");
$ip4 = gg("ESP1.ip4");
$ip = $ip1.".".$ip2.".".$ip3.".".$ip4;
sg("ESP1.IP",$ip);
--------------------------------------
У этого класса есть объект "ESP1" со свойствами:
ESP1.ip - унаследованный от класса
ESP1.ip1 ESP1.ip2 ESP1.ip3 ESP1.ip4 - октеты IP-адреса, полученного по MQTT
В последующем появятся ESP2, ESP3 и т.д.

Вопросов два:
1. Как мне подправить "ip_metod", чтобы он правил поле ESP1.ip и потом в последующих ESP2.ip и т.д.
2. В каком месте более правильным было бы выполнять этот метод? Я пока нашёл единственное место вызова, по изменению в MQTT

Но он там не вызывается, да и привязан только к свойствам ESP1
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: вызов метода при изменении свойства объекта

Сообщение xor » Сб июн 08, 2019 10:01 pm

Ilfat писал(а):Доброго дня!
Направьте пожалуйста на путь истинный.
Имею класс "ESP_Mega"
У него есть свойство "ip"
и есть метод "ip_metod" (пока в таком виде):
--------------------------------------
$ip1 = gg("ESP1.ip1");
say("1й октет: ".gg("ESP1.ip1"));
$ip2 = gg("ESP1.ip2");
$ip3 = gg("ESP1.ip3");
$ip4 = gg("ESP1.ip4");
$ip = $ip1.".".$ip2.".".$ip3.".".$ip4;
sg("ESP1.IP",$ip);
--------------------------------------
У этого класса есть объект "ESP1" со свойствами:
ESP1.ip - унаследованный от класса
ESP1.ip1 ESP1.ip2 ESP1.ip3 ESP1.ip4 - октеты IP-адреса, полученного по MQTT
В последующем появятся ESP2, ESP3 и т.д.

Вопросов два:
1. Как мне подправить "ip_metod", чтобы он правил поле ESP1.ip и потом в последующих ESP2.ip и т.д.
2. В каком месте более правильным было бы выполнять этот метод? Я пока нашёл единственное место вызова, по изменению в MQTT

Но он там не вызывается, да и привязан только к свойствам ESP1
Вместо gg("ESP1.ip1") писать $this->getProperty ('ip1'), вместо setGlobal -- $this->setProperty('IP',$ip). Этим и хорош классовый метод.
Вызывать его можно и по изменению свойства в классе (когда уже есть все данные --ip1, ip2,...) , не знаю, применимо ли это в данном случае (

Отправлено с моего Redmi 4X через Tapatalk
Ilfat
Сообщения: 44
Зарегистрирован: Пт июн 07, 2019 7:40 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: вызов метода при изменении свойства объекта

Сообщение Ilfat » Вс июн 09, 2019 2:40 am

xor писал(а):
Сб июн 08, 2019 10:01 pm
Вопросов два:
1. Как мне подправить "ip_metod", чтобы он правил поле ESP1.ip и потом в последующих ESP2.ip и т.д.
2. В каком месте более правильным было бы выполнять этот метод? Я пока нашёл единственное место вызова, по изменению в MQTT

Но он там не вызывается, да и привязан только к свойствам ESP1
Вместо gg("ESP1.ip1") писать $this->getProperty ('ip1'), вместо setGlobal -- $this->setProperty('IP',$ip). Этим и хорош классовый метод.
Вызывать его можно и по изменению свойства в классе (когда уже есть все данные --ip1, ip2,...) , не знаю, применимо ли это в данном случае (
[/quote]

Подправил по пункту 1. Всё стало на много лучше.
А вот вызов метода как-то не срастается. Прописал вызов по изменению в mqtt - перестал вызываться.
Или я что-то делаю не так.
Вот как пытаюсь вызвать: https://c2n.me/41ZBS2D
Вот как выглядет метод: https://c2n.me/41ZBTTz
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: вызов метода при изменении свойства объекта

Сообщение xor » Вс июн 09, 2019 7:21 pm

Ilfat писал(а):
Вс июн 09, 2019 2:40 am

Подправил по пункту 1. Всё стало на много лучше.
А вот вызов метода как-то не срастается. Прописал вызов по изменению в mqtt - перестал вызываться.
Или я что-то делаю не так.
Вот как пытаюсь вызвать: https://c2n.me/41ZBS2D
Вот как выглядет метод: https://c2n.me/41ZBTTz
по поводу москита ничего не скажу - не пользуюсь.
но, в качестве эксперимента, можно попробовать отвязать вызов метода из москита и повесить его в классе на изменение свойства ип4

по поводу метода - второй скрин - галку После выполнения кода -- осознанно ставили? Дело в том, что в классовом методе корневом там обычно Никогда стоит
Ilfat
Сообщения: 44
Зарегистрирован: Пт июн 07, 2019 7:40 pm
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: вызов метода при изменении свойства объекта

Сообщение Ilfat » Вс июн 09, 2019 9:26 pm

xor писал(а):
Вс июн 09, 2019 7:21 pm
по поводу москита ничего не скажу - не пользуюсь.
но, в качестве эксперимента, можно попробовать отвязать вызов метода из москита и повесить его в классе на изменение свойства ип4
Вообще-то мне не очень хотелось переменные ip1,ip2,ip3,ip4 вытаскивать в свойства класса, оставляя их на уровне свойств объекта. Но попробую.
Спасибо. Так стало намного лучше.
xor писал(а):
Вс июн 09, 2019 7:21 pm
по поводу метода - второй скрин - галку После выполнения кода -- осознанно ставили? Дело в том, что в классовом методе корневом там обычно Никогда стоит
Не осознанно. Точнее просто пробовал.
alexpzas
Сообщения: 25
Зарегистрирован: Пн авг 19, 2013 4:17 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: вызов метода при изменении свойства объекта

Сообщение alexpzas » Пн янв 27, 2020 11:41 pm

Всем привет, помогите плиз. Проблема в том, что на уровне класса в свойстве в поле - Запускать метод при изменении, выбрал нужный мне метод,(кстати свойство привязано к mqtt паблику), и теперь каждую секунду метод отрабатывает, хотя значение свойства не меняется. Я так понимаю это из за того , что каждую сек. обновляется состояние свойства, и хоть его значение не меняется, но МДМ понимает это по другому и вызывает метод. Как сделать так, чтобы метод вызывался только при смене значения свойства.
Ответить