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

Re: Вопросы по коду

Добавлено: Чт окт 19, 2017 11:45 pm
Chainik
Уважаемые, форумчане! Уверен, вопрос не раз обсуждался и решение есть. Искал поиском но, к сожалению, не нашел ответа (примера кода).

В общем, ситуация, наверное, типовая.
Есть класс "RB" с множеством однотипных объектов.
Есть метод "Selection", в котором перебираются все объекты класса и в зависимости от значения свойства "Room", выполняется (или не выполняется) некое действие.

Есть объект на сцене (изображение-кнопка), при клике на который выполняется код и запускается метод "Selection" конкретного объекта класса (хотя метод для всех объектов класса одинаковый, т.к. всегда выполняется "общеклассовый" метод).
Вот такой код выполняется при клике:

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

$value=205; // Значение, с которым надо сравнить значение свойства "Room" каждого объекта класса
cm('RB_2.Selection'); //при запуске метода туда надо еще передать значение переменной $value  
Вот "заготовка" метода "Selection"

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

$objects=getObjectsByClass("RB");
foreach($objects as $obj) {
If (gg($obj['TITLE'].".Room") == $value) {
 setGlobal($obj['TITLE'].".Selected",1);
}
}
Собственно, вопроса два:
1. Как передать параметр $value в метод
2. Как правильно "сформулировать" код в условии If?
(Потому не уверен, что код

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

If (gg($obj['TITLE'].".Room") == $value)
будет работать.)

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 12:13 am
skysilver
Передать параметр так:

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

$value=205;
cm('RB_2.Selection', array('value'=>$value)); 
Внутри метода получить так:

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

$val = $params['value'];
и сравнить

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

if (gg($obj['TITLE'].".Room") == $val) {
 setGlobal($obj['TITLE'].".Selected",1);
}
205 это номер кабинета? ))

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 8:54 am
Chainik
skysilver писал(а):...
205 это номер кабинета? ))
Это уникальный номер помещения. Не то чтобы я под Зимний Дворец проектирую, но хочется как-то все унифицировать :)

А еще можно спросить, в целях повышения образованности?
Если нам надо передать не один, а несколько параметров, например

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

$value=205;
$value2=107;
$value3=301;
cm('RB_2.Selection', array(????????????????????)); 
Это как должно выглядеть?

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 8:56 am
nick7zmail

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

cm('RB_2.Selection', array('value1'=>$value1, 'value2'=>$value2)); 
и так далее...

Лично я бы вписал эти value в свойства объекта (в объекте, связанном с помещением), и прямо в конечном методе проверял - установлено ли это свойство, и если установлено - то выполняем какие нить действия...
Так не пришлось бы прописывать каждую запись (каждый номер) отдельно.

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 9:04 am
nightwind
nick7zmail писал(а):

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

cm('RB_2.Selection', array('value1'=>$value1, 'value2'=>$value2));
и так далее...

Лично я бы вписал эти value в свойства объекта (в объекте, связанном с помещением), и прямо в конечном методе проверял - установлено ли это свойство, и если установлено - то выполняем какие нить действия...
Так не пришлось бы прописывать каждую запись (каждый номер) отдельно.
Это еще больше нагрузит и тк нагруженную базу.
Я наоборот стараюсь выносить такие вещи в переменные в коде, в базе и так слишком много хранится временных величин

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 9:06 am
Chainik
Спасибо, друзья! Знал, что выручите.
nick7zmail писал(а):...
Лично я бы вписал эти value в свойства объекта (в объекте, связанном с помещением), и прямо в конечном методе проверял - установлено ли это свойство, и если установлено - то выполняем какие нить действия...
Так не пришлось бы прописывать каждую запись (каждый номер) отдельно.
Да я, собственно, так и делаю. Параметры передаются из кода, выполняемого по клику кнопки на сцене. Кнопок несколько и каждая связана со своим объектом в классе. А при выполнении метода переданный параметр сравнивается с соответствующими свойствами объекта класса.

Re: Вопросы по коду

Добавлено: Пт окт 20, 2017 11:04 am
olehs
Как говорится, добавлю немного синтаксического сахара :) :
Конструкцию

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

$value1 = 1;
$value2 = '2';
cm('RB_2.Selection', array('value1'=>$value1, 'value2'=>$value2));
можно записать так

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

$value1 = 1;
$value2 = '2';
cm('RB_2.Selection', ['value1'=>$value1, 'value2'=>$value2]);
или так

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

$value1 = 1;
$value2 = '2';
cm('RB_2.Selection', compact('value1', 'value2'));