Программно инициализировать метод
Модератор: immortal
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Программно инициализировать метод
не, с SQL я так и не разобрался, тут пока заставил готовый addClassMethod работать пол дня прошло. Сори, работаю над несколькими задачами и не прочитал предыдущие посты где ты действительно всё расписал про него. Я первый раз попробовал - не заработало, переключился на другую задачу и потом уже через поиск сам снова нашёл пример с addClassMethod() и потом заработало
В общем тупо получилось.
А на счёт привязки, я не понял почему ты считаешь что это неправильно из модуля делать? Я рассуждаю так: юзер скачал модуль и автоматически получил работающий функционал. Откуда он знает что к чему надо привязывать? Что бы это понять надо кучу мануала перечитать. А так он получает работающий функционал сразу.
И я не понял фразу "связывайте лучше свойство с модулем вашим". Как это выглядит?
В общем тупо получилось.
А на счёт привязки, я не понял почему ты считаешь что это неправильно из модуля делать? Я рассуждаю так: юзер скачал модуль и автоматически получил работающий функционал. Откуда он знает что к чему надо привязывать? Что бы это понять надо кучу мануала перечитать. А так он получает работающий функционал сразу.
И я не понял фразу "связывайте лучше свойство с модулем вашим". Как это выглядит?
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Так во всех модулях делается...функцияИ я не понял фразу "связывайте лучше свойство с модулем вашим". Как это выглядит?
Код: Выделить всё
addLinkedProperty(объект, свойство, имя_модуля);
Код: Выделить всё
function propertySetHandle($object, $property, $value)
А пользователю можно просто оставить создание простого устройства прямо из модуля.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Программно инициализировать метод
И все же, как привязать вызов метода при изменении свойства объекта? Вручную это сделать можно через интерфейс легко, но как привязать при создании объекта плагином?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Программно инициализировать метод
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
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Ну, собственно, как я и говорил. Напрямую через sql.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Программно инициализировать метод
nick7zmail, а у тебя нет понимания как самому клепать "встроенные функции", типа setGlobal, getGlobal итд? Можно было бы сделать функцию линковки метода к свойству, рас он так популярен.
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Программно инициализировать метод
Чето не взлетает
И что такое on_off мне не понятно.
Код: Выделить всё
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);
}
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Да в принципе есть...идём в /lib/objects.class.php и дописываем по-аналогии с другими функциями. Только надо чётко определить что вы на входе хотите, что на выходе. При желании можно доработать addclassproperty, чтобы onchange заполнил если будет указан какой либо параметр.Gelezako писал(а):nick7zmail, а у тебя нет понимания как самому клепать "встроенные функции", типа setGlobal, getGlobal итд? Можно было бы сделать функцию линковки метода к свойству, рас он так популярен.
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 694 раза
- Контактная информация:
Re: Программно инициализировать метод
Ура, взлетело
Код: Выделить всё
*/
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
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
Re: Программно инициализировать метод
а само свойство "t" создаётся? И ещё, предлагаю свойствам давать более говорящие имена.
я же под кодом это написал, не прочитал?
- За это сообщение автора Gelezako поблагодарил:
- directman66 (Пт апр 20, 2018 3:40 pm)
- Рейтинг: 1.16%
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E