То-то и оно, что они вроде бы все как раз с this-> вызываются.directman66 писал(а): ↑Пт апр 20, 2018 8:47 pmТам же в классе полно других функций, которые вызываются вроде без ссылки на самого себя. Я сейчас с телефона, детей укладываю, уже не проверить.
Программно инициализировать метод
Модератор: immortal
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Программно инициализировать метод
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Модифицировал функцию addClassProperty, иначе если писать новую - она почти такая же выходит)))
Зайдите в /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('имя класса', 'имя свойства', 'хранить историю', 'имя связанного метода');
- За это сообщение автора nick7zmail поблагодарили (всего 2):
- Gelezako (Сб апр 21, 2018 11:47 am) • directman66 (Сб апр 21, 2018 2:54 pm)
- Рейтинг: 2.33%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Gelezako
- Сообщения: 963
- Зарегистрирован: Чт июн 02, 2016 9:33 pm
- Благодарил (а): 205 раз
- Поблагодарили: 106 раз
- Контактная информация:
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
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Да пожалуйста)) я ж говорю - я ленив для этого)
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
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
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
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;
}
- За это сообщение автора fandaymon поблагодарил:
- directman66 (Ср апр 25, 2018 3:36 pm)
- Рейтинг: 1.16%
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: Программно инициализировать метод
А как корректнее править? Через SQL? Или есть более удобное решение?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
-
- Сообщения: 1553
- Зарегистрирован: Сб янв 13, 2018 5:00 pm
- Благодарил (а): 39 раз
- Поблагодарили: 574 раза
Re: Программно инициализировать метод
Ну вот же оно и есть - $this->getConfig(); получитьdirectman66 писал(а): ↑Ср апр 25, 2018 3:37 pmА как корректнее править? Через SQL? Или есть более удобное решение?
$this->config['название параметра']=значение параметра; - изменить вручную значение
$this->saveConfig(); сохранить
специальные методы класса написаны
Последний раз редактировалось fandaymon Ср апр 25, 2018 3:49 pm, всего редактировалось 1 раз.
- За это сообщение автора fandaymon поблагодарил:
- directman66 (Ср апр 25, 2018 6:09 pm)
- Рейтинг: 1.16%
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Программно инициализировать метод
Только перед this знак $...а так всё правильно говорят.
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Отправлено с моего Xperia XZ1 Compact через Tapatalk
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2801
- Зарегистрирован: Пн дек 26, 2016 9:51 am
- Откуда: Екатеринбург
- Благодарил (а): 380 раз
- Поблагодарили: 693 раза
- Контактная информация:
Re: Программно инициализировать метод
Друзья, посмотрите тему https://majordomo.smartliving.ru/forum/ ... f=4&t=5432
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram