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

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

Модератор: immortal

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

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

Сообщение Gelezako »

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

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

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

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

Сообщение nick7zmail »

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

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

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

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

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

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

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

Сообщение directman66 »

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

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

Сообщение Gelezako »

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' - название метода который будет вызываться
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург

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

Сообщение nick7zmail »

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

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

Сообщение Gelezako »

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

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

Сообщение directman66 »

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

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

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
Откуда: Екатеринбург

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

Сообщение nick7zmail »

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
Сообщения: 2799
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Контактная информация:

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

Сообщение directman66 »

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

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

*/
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
Контактная информация:

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

Сообщение Gelezako »

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