Баг в наследовании свойств объектов.

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

Модератор: immortal

Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Баг в наследовании свойств объектов.

Сообщение nightwind » Ср окт 26, 2016 3:49 pm

Решил упорядочнить дефолтное дерево классов.
Создал класс Sensor,
Свойства класса:

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

alive
aliveTimeOut
LinkedRoom
updated
updatedTime
Все остальные классы сенсоров сделал производными от этого. Соответствующие свойства в наследующих классах поубирал.
Вроде все работает. НО!!
http://joxi.ru/Dr8OjdlT3lOEA6
Как видно, в температурном сенсоре создаются заново приватные свойства, а в наследованные от Sensor не пишется нифига. Я их удалял 2 раза, не помогло. Как быть?
Я понимаю, что если убить сенсоры и пересоздать объекты заново - скорее всего они наследуют. но не охота же. Если есть возможность переподчинить - то должно и наследовать правильно, не?
Кастую Сергея в топик

upd. пересоздал класс tempsensor сразу установив родительским sensor. те же яйца, свойства в объектах класса двоятся
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Баг в наследовании свойств объектов.

Сообщение xor » Ср окт 26, 2016 10:46 pm

nightwind писал(а):Соответствующие свойства в наследующих классах поубирал.
Т.е., как я понял, создан общий класс с определенными свойствами Сенсор, потом был создан наследник tempsensor, в котором вы удалили родительские свойства и добавили новые одноименные?
Мсье знает толк в извращеньях!))

А в методах this не используется случайно?

Попробуйте при создании подкласса-наследника не удалять базовые свойства, тогда свойство с именем, напр, АЛИВЕ в подклассе будет единственным и неповторимым.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Баг в наследовании свойств объектов.

Сообщение nick7zmail » Чт окт 27, 2016 6:30 am

Несколько раз встречался с "двоением" свойств, когда свойства создавались новые, а не писались в родительские. Спасала перезагрузка системы.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Баг в наследовании свойств объектов.

Сообщение nightwind » Чт окт 27, 2016 12:35 pm

xor писал(а):
nightwind писал(а):Соответствующие свойства в наследующих классах поубирал.
Т.е., как я понял, создан общий класс с определенными свойствами Сенсор, потом был создан наследник tempsensor, в котором вы удалили родительские свойства и добавили новые одноименные?
Мсье знает толк в извращеньях!))

А в методах this не используется случайно?
Были у меня классы из коробки - keySensors, tempSensors, movementSensors - все они отличаются 1-2 свойствами.
я создал класс Sensor {alive aliveTimeOut LinkedRoom updated updatedTime} и указал его базовым для tempSensors. в tempSensors перед этим удалил все свойства кроме temp.
Никакого извращенства нет - классика наследования.
создал объект класса tempSensors - и на его странице свойства двояться. и двоит их скорее всего именно метод с обращениями $this->

Перезагрузка не помогла. куда копать, как быть??
Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Баг в наследовании свойств объектов.

Сообщение xor » Чт окт 27, 2016 12:42 pm

Ну, опубликуйте методы Сенсоров и Темп, в методах Темп наверняка стоит галка про Запускать родительский метод, не?


Отправлено с моего Nexus 5 через Tapatalk
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Баг в наследовании свойств объектов.

Сообщение nick7zmail » Чт окт 27, 2016 1:44 pm

nightwind писал(а): Перезагрузка не помогла. куда копать, как быть??
Куда копать в таком случае - честно не знаю. Попробуйте с нуля подобное дерево создать. Если проблема повторится - баг системы. Если не повторится - что-то случилось при переносе классов в родительский.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Баг в наследовании свойств объектов.

Сообщение nightwind » Чт окт 27, 2016 2:21 pm

Класс Sensor

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

Свойства класса:
alive
aliveTimeOut
LinkedRoom
updated
updatedTime

Методы класса:
onAlive

$old=$params['OLD_VALUE'];
$new=$params['NEW_VALUE']; 
//return;
//say("old=".$old." : new= ".$new);
if ($old !=$new) {
 if ($new=="0") {say($this->object_title. " умер");}
 else{ say($this->object_title. " работоспособность восстановлена");}
}
tempSensors

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

Свойства класса:
alive
aliveTimeOut
LinkedRoom
updated
updatedTime

Методы класса:
onAlive

$old=$params['OLD_VALUE'];//
$new=$params['NEW_VALUE']; 
//return;
//say("old=".$old." : new= ".$new);
if ($old !=$new) {
 if ($new=="0") {say($this->object_title. " умер");}
 else{ say($this->object_title. " работоспособность восстановлена");}
}

Объекты класса:
Видно, что наследуется. Но странно уже то, что в классе темпсенсор в выводе нет объектов, а они по факту в системе есть. И видны только наследуемые свойства, а приватных свойств в подклассах не видно. косяк где то здесь, да?

Ни один дочерний метод нигде не перекрывает родительский.
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Баг в наследовании свойств объектов.

Сообщение nightwind » Чт окт 27, 2016 4:57 pm

в базе в таблице pvalues для объекьа, у которого двоятся свойства, не заполнено поле property name

кастую сергея в тред! непонятно нифига
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Баг в наследовании свойств объектов.

Сообщение sergejey » Чт окт 27, 2016 6:03 pm

Видимо, где-то ошибка, но сейчас я не смогу с ней разобраться. Вы можете попробовать сами найти момент возникновения проблемы, воспроизведя её на чистой системе и наблюдая за тем, что происходит в базе данных. Момент возникновения проблемы уже половина решения.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Баг в наследовании свойств объектов.

Сообщение nightwind » Чт окт 27, 2016 6:26 pm

Все заглючило в тот момент, когда я класс tempsensor переподчинил вновь созданному (выставил в свойствах родителя). при этом в системе уже были экземпляры класса tempsensor.
попробую воспроизвести глюк заново. бэкап есть)
Ответить