Программно инициализировать метод

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

Модератор: immortal

Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Программно инициализировать метод

Сообщение Gelezako » Пн дек 04, 2017 8:23 pm

не, с SQL я так и не разобрался, тут пока заставил готовый addClassMethod работать пол дня прошло. Сори, работаю над несколькими задачами и не прочитал предыдущие посты где ты действительно всё расписал про него. Я первый раз попробовал - не заработало, переключился на другую задачу и потом уже через поиск сам снова нашёл пример с addClassMethod() и потом заработало :)
В общем тупо получилось.

А на счёт привязки, я не понял почему ты считаешь что это неправильно из модуля делать? Я рассуждаю так: юзер скачал модуль и автоматически получил работающий функционал. Откуда он знает что к чему надо привязывать? Что бы это понять надо кучу мануала перечитать. А так он получает работающий функционал сразу.

И я не понял фразу "связывайте лучше свойство с модулем вашим". Как это выглядит?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Программно инициализировать метод

Сообщение nick7zmail » Пн дек 04, 2017 8:43 pm

И я не понял фразу "связывайте лучше свойство с модулем вашим". Как это выглядит?
Так во всех модулях делается...функция

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

addLinkedProperty(объект, свойство, имя_модуля); 
привязывает модуль к изменению определенного свойства...когда свойство меняется - вызывается функция, описанная в основном классе модуля

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

 function propertySetHandle($object, $property, $value) 
И в ней делайте, что хотите. И это, кстати, практически единственный вариант не связываться с sql, а работать с объектами, методами при изменении свойств.

А пользователю можно просто оставить создание простого устройства прямо из модуля.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Программно инициализировать метод

Сообщение directman66 » Пт апр 20, 2018 8:44 am

И все же, как привязать вызов метода при изменении свойства объекта? Вручную это сделать можно через интерфейс легко, но как привязать при создании объекта плагином?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Программно инициализировать метод

Сообщение Gelezako » Пт апр 20, 2018 2:52 pm

directman66 писал(а):
Пт апр 20, 2018 8:44 am
И все же, как привязать вызов метода при изменении свойства объекта? Вручную это сделать можно через интерфейс легко, но как привязать при создании объекта плагином?

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

	$prop_id=addClassProperty('Yeelight', 'status', 0);
				  if ($prop_id) {
					  $property=SQLSelectOne("SELECT * FROM properties WHERE ID=".$prop_id);
					  $property['ONCHANGE']='on_off'; //   <-----------
					  SQLUpdate('properties',$property);
				  } 

выделил строчку стрелочкой, 'on_off' - название метода который будет вызываться
За это сообщение автора Gelezako поблагодарил:
directman66 (Пт апр 20, 2018 3:18 pm)
Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Программно инициализировать метод

Сообщение nick7zmail » Пт апр 20, 2018 3:12 pm

Ну, собственно, как я и говорил. Напрямую через sql.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Программно инициализировать метод

Сообщение Gelezako » Пт апр 20, 2018 3:17 pm

nick7zmail писал(а):
Пт апр 20, 2018 3:12 pm
Ну, собственно, как я и говорил. Напрямую через sql.
nick7zmail, а у тебя нет понимания как самому клепать "встроенные функции", типа setGlobal, getGlobal итд? Можно было бы сделать функцию линковки метода к свойству, рас он так популярен.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Программно инициализировать метод

Сообщение directman66 » Пт апр 20, 2018 3:30 pm

Чето не взлетает

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

addClass('livegpstracks'); // Создаем класс
addClassMethod('livegpstracks','ONCHANGE','SQLUpdate(\'objects\', array("ID"=>$this->id, "DESCRIPTION"=>$this->getProperty("title").\' \'.gg(\'sysdate\').\' \'.gg(\'timenow\'))); ');
//addClassProperty('livegpstracks','t');
addClassProperty('livegpstracks','d');

$prop_id=addClassProperty('livegpstracks', 't', 0);
				  if ($prop_id) {
					  $property=SQLSelectOne("SELECT * FROM properties WHERE ID=".$prop_id);
					  $property['ONCHANGE']='on_off'; //   <-----------
					  SQLUpdate('properties',$property);
				  } 
И что такое on_off мне не понятно.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Программно инициализировать метод

Сообщение nick7zmail » Пт апр 20, 2018 3:36 pm

Gelezako писал(а):
nick7zmail писал(а):
Пт апр 20, 2018 3:12 pm
Ну, собственно, как я и говорил. Напрямую через sql.
nick7zmail, а у тебя нет понимания как самому клепать "встроенные функции", типа setGlobal, getGlobal итд? Можно было бы сделать функцию линковки метода к свойству, рас он так популярен.
Да в принципе есть...идём в /lib/objects.class.php и дописываем по-аналогии с другими функциями. Только надо чётко определить что вы на входе хотите, что на выходе. При желании можно доработать addclassproperty, чтобы onchange заполнил если будет указан какой либо параметр.

Отправлено с моего Xperia XZ1 Compact через Tapatalk

Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Программно инициализировать метод

Сообщение directman66 » Пт апр 20, 2018 3:37 pm

Ура, взлетело

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

*/
addClass('livegpstracks'); // Создаем класс
addClassMethod('livegpstracks','update','SQLUpdate(\'objects\', array("ID"=>$this->id, "DESCRIPTION"=>$this->getProperty("title").\' \'.gg(\'sysdate\').\' \'.gg(\'timenow\'))); ');
//addClassProperty('livegpstracks','t');
addClassProperty('livegpstracks','d');

$prop_id=addClassProperty('livegpstracks', 't', 0);
				  if ($prop_id) {
					  $property=SQLSelectOne("SELECT * FROM properties WHERE ID=".$prop_id);
					  $property['ONCHANGE']='update'; //   <-----------
					  SQLUpdate('properties',$property);
				  } 
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Программно инициализировать метод

Сообщение Gelezako » Пт апр 20, 2018 3:38 pm

directman66 писал(а):
Пт апр 20, 2018 3:30 pm
Чето не взлетает
а само свойство "t" создаётся? И ещё, предлагаю свойствам давать более говорящие имена.
directman66 писал(а):
Пт апр 20, 2018 3:30 pm
И что такое on_off мне не понятно.
я же под кодом это написал, не прочитал?
За это сообщение автора Gelezako поблагодарил:
directman66 (Пт апр 20, 2018 3:40 pm)
Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Ответить