Страница 1 из 1

Расшифруйте ПЛЗ мне функцию

Добавлено: Чт июл 19, 2018 9:17 pm
tarasfrompir

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

function addDevice($device_type, $options=0) {
     $this->setDictionary();
     $type_details=$this->getTypeDetails($rec['TYPE']);
     if (!is_array($options)) {
         $options=array();
     }
     if (!is_array($this->device_types[$device_type])) {
         return 0;
     }
$rec=array();
     $rec['TYPE']=$device_type;
     if ($options['TITLE']) {
       $rec['TITLE']=$options['TITLE'];
     } else {
       $rec['TITLE']='New device '.date('H:i');
     }
     if ($options['LOCATION_ID']) {
         $rec['LOCATION_ID']=$options['LOCATION_ID'];
     }
     $rec['ID']=SQLInsert('devices',$rec);
     if ($rec['LOCATION_ID']) {
         $location_title=getRoomObjectByLocation($rec['LOCATION_ID'],1);
     }
     if (!$rec['LINKED_OBJECT']) {
         $new_object_title=ucfirst($rec['TYPE']).$this->getNewObjectIndex($type_details['CLASS']);
         $object_id=addClassObject($type_details['CLASS'],$new_object_title,'sdevice'.$rec['ID']);
         $rec['LINKED_OBJECT']=$new_object_title;
         if (preg_match('/New device .+/',$rec['TITLE'])) {
             $rec['TITLE']=$rec['LINKED_OBJECT'];
         }
         SQLUpdate('devices',$rec);
     }
     if ($table_rec['ID']) {
         $this->addDeviceToSourceTable($options['TABLE'],$table_rec['ID'],$rec['ID']);
     }
     if ($options['ADD_MENU']) {
         $this->addDeviceToMenu($rec['ID']);
     }
     if ($options['ADD_SCENE']) {
         $this->addDeviceToScene($rec['ID']);
     }
     return 1;
 }
Вот в этой функции строка № 3 - $type_details=$this->getTypeDetails($rec['TYPE']);
ГДЕ она возмет $rec['TYPE'] ???
Или я чего то не понимаю....???

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Чт июл 19, 2018 10:20 pm
skysilver
Полагаю, ф-я getTypeDetails сама вернет нужное значение и запишет в $rec['TYPE']
См. "передача по ссылке" http://php.net/manual/ru/language.references.pass.php

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Чт июл 19, 2018 10:26 pm
tarasfrompir
А как же это - ??? Начиная с PHP 5.4.0 передача переменной по ссылке стала невозможна, поэтому использование этого приема приведет к фатальной ошибке.

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Чт июл 19, 2018 10:41 pm
tarasfrompir
И еще вот вызываемая функция -

function getTypeDetails($type) {
return $this->device_types[$type];
}

Я так понимаю что $rec['TYPE'] для нее это данные для вычисления функции

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Сб июл 21, 2018 4:15 pm
olehs
Так а разве вы это не исправили 29 дней назад?
https://github.com/sergejey/majordomo/c ... 3ace78c770

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Сб июл 21, 2018 8:28 pm
tarasfrompir
Да но все вернули назад - поэтому и вопрос почему вернули и может что-то я не понимаю. И вообще почему же с такой уверенностью все изменено назад! И вот же вопрос возник Почему? И или может все же это сделано правильно? И может я чего не догоняют???

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Сб июл 21, 2018 8:36 pm
nightwind
Возможно в области видимости этой функции существует т $rec['TYPE']. там и возьмет

Re: Расшифруйте ПЛЗ мне функцию

Добавлено: Сб июл 21, 2018 11:23 pm
olehs
Думаю Сергей случайно потер изменения в альфе. В мастере остались правки