То-то и оно, что они вроде бы все как раз с this-> вызываются.directman66 писал(а): Пт апр 20, 2018 8:47 pm Там же в классе полно других функций, которые вызываются вроде без ссылки на самого себя. Я сейчас с телефона, детей укладываю, уже не проверить.
Программно инициализировать метод
Модератор: immortal
Re: Программно инициализировать метод
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: Программно инициализировать метод
Модифицировал функцию addClassProperty, иначе если писать новую - она почти такая же выходит)))Gelezako писал(а): Пт апр 20, 2018 3:17 pm nick7zmail, а у тебя нет понимания как самому клепать "встроенные функции", типа setGlobal, getGlobal итд? Можно было бы сделать функцию линковки метода к свойству, рас он так популярен.
Зайдите в /lib/objects.class.php, найдите там её и замените на
Код: Выделить всё
function addClassProperty($class_name, $property_name, $keep_history = 0, $method_name='')
{
$class_id = addClass($class_name);
$method_id = addClassMethod($class_name, $method_name);
$sqlQuery = "SELECT ID
FROM properties
WHERE TITLE LIKE '" . DBSafe($property_name) . "'
AND OBJECT_ID = 0
AND CLASS_ID = '" . $class_id . "'";
$prop = SQLSelectOne($sqlQuery);
if (!$prop['ID'])
{
$prop = array();
$prop['CLASS_ID'] = $class_id;
$prop['TITLE'] = $property_name;
$prop['KEEP_HISTORY'] = $keep_history;
$prop['ONCHANGE'] = $method_name;
$prop['OBJECT_ID'] = 0;
$prop['ID'] = SQLInsert('properties', $prop);
}
return $prop['ID'];
}
Код: Выделить всё
addClassProperty('имя класса', 'имя свойства', 'хранить историю', 'имя связанного метода');Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Re: Программно инициализировать метод
я проверил, всё работает, спасибо!
С твоего позволения оформлю пулреквест.
С твоего позволения оформлю пулреквест.
фанат Мажордомо
тематический блог 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
- Откуда: Екатеринбург
Re: Программно инициализировать метод
Да пожалуйста)) я ж говорю - я ленив для этого)
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
directman66
- Сообщения: 2799
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Контактная информация:
Re: Программно инициализировать метод
Друзья, спрошу тут, так как тут самые помощники ))
Есть главная функция из примеров модуля
По ней у меня несколько вопросов:
1) В этих переменных обычно хранят настройки модулей. Я так и не нашел, где физически эти данные хранятся и как они передаются в БД
2) Как из функции корректно читать их значения, если оно не передается функции
3) Как из функции корректно изменять их значения, если оно не возвращается.
Есть главная функция из примеров модуля
Код: Выделить всё
function admin(&$out) {
$this->getConfig();
$out['DEBUG'] = $this->config['DEBUG'];
if ($this->view_mode=='update_settings') {
global $debug;
$this->config['DEBUG']=$debug;
}
1) В этих переменных обычно хранят настройки модулей. Я так и не нашел, где физически эти данные хранятся и как они передаются в БД
2) Как из функции корректно читать их значения, если оно не передается функции
3) Как из функции корректно изменять их значения, если оно не возвращается.
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Re: Программно инициализировать метод
directman66 писал(а): Ср апр 25, 2018 3:14 pm Друзья, спрошу тут, так как тут самые помощники ))
Есть главная функция из примеров модуляПо ней у меня несколько вопросов:Код: Выделить всё
function admin(&$out) { $this->getConfig(); $out['DEBUG'] = $this->config['DEBUG']; if ($this->view_mode=='update_settings') { global $debug; $this->config['DEBUG']=$debug; }
1) В этих переменных обычно хранят настройки модулей. Я так и не нашел, где физически эти данные хранятся и как они передаются в БД
2) Как из функции корректно читать их значения, если оно не передается функции
3) Как из функции корректно изменять их значения, если оно не возвращается.
Код: Выделить всё
public function getConfig()
{
$sqlQuery = "SELECT *
FROM project_modules
WHERE NAME = '" . $this->name . "'";
$rec = SQLSelectOne($sqlQuery);
$data = $rec["DATA"];
$this->config = unserialize($data);
return $this->config;
}
-
directman66
- Сообщения: 2799
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Контактная информация:
Re: Программно инициализировать метод
А как корректнее править? Через SQL? Или есть более удобное решение?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Re: Программно инициализировать метод
Ну вот же оно и есть - $this->getConfig(); получитьdirectman66 писал(а): Ср апр 25, 2018 3:37 pm А как корректнее править? Через SQL? Или есть более удобное решение?
$this->config['название параметра']=значение параметра; - изменить вручную значение
$this->saveConfig(); сохранить
специальные методы класса написаны
Последний раз редактировалось fandaymon Ср апр 25, 2018 3:49 pm, всего редактировалось 1 раз.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
Re: Программно инициализировать метод
Только перед this знак $...а так всё правильно говорят.
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
directman66
- Сообщения: 2799
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Контактная информация:
Re: Программно инициализировать метод
Друзья, посмотрите тему https://majordomo.smartliving.ru/forum/ ... f=4&t=5432
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram