parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Обнаружил интересную вещь при получении параметров объектов.

4ept 05.07.2008 23:21 / 05.07.2008 23:21

Есть база данных: id, title, param
Есть класс, в котором выводятся данные из этой таблицы(привожу упрощеный код).
@CLASS
abc

@create[parpam]
$sp[$param]

@GET_s[]
$S[^MAIN:oSql.table[
	SELECT id, title FROM db
	WHERE param=$param]
]
$result[$S]
#end @GET_s[]

@print_s[]
	^if(def $self.s){
		^self.s.menu{
			$self.s.id - $self.s.title
		}
	}
#end @print_s[]
Все бы ничего... но работает не совсем так, как я ожидал.
А именно: количество выбранных записей из таблицы выбрано верно, но значения выдаются все одинаковые (по первой записи).

Выхода два:
1) Вынести
$S[^MAIN:oSql.table[
	SELECT id, title FROM db
	WHERE param=$param]
]
из @GET_s[] в конструктор объекта.
2) В методе @print_s[] добавить $ss[$self.s] и вместо $self.s использовать $ss.

Это так и должно быть?
С одной стороны, код выполняется каждый раз, при вызове методов @GET_*, но с другой стороны, возвращается объект, с которым, по идее, должно быть можно работать, не делая дополнительного присваивания.