parser

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

 

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

Вместо вызова надо положить в переменную ссылку на функцию...

Sumo 10.01.2014 11:06 / 10.01.2014 11:09

Т.е. вместо $getUser[^auth.getUser[]] надо написать $getUser[$auth.getUser], иначе вы просто сделали вызов и в переменной getUser у вас результат работы функции (таблица).

Можно просто обратиться к нужной функции: ^MAIN:auth.getUser[$.user_id[12345]]

Но оба эти способа плохие, поскольку противоречат очень важному принципу ООП — инверсии управления (inversion of control). В данном случае лучше сделать внедрение зависимости через конструктор:
@main[]
  ...
  $auth[^auth::init[$cookie:CLASS;$form:fields;$.csql[$oSql]]]
  ..
  $mc[^MyClass::create[$.auth[$auth]]]
  ^mc.someMethod[12345]

@CLASS
MyClass

@create[aOptions]
  $auth[$aOptions.auth]

@someMethod[aUserID][locals]
  $lUser[^auth.getUser[$.user_id[$aUserID]]]
  ...
В этом случае мы получили класс без привязки к глобальным переменным, переносимым, его легко тестировать и отлаживать. Обратите внимание, что именно таким образом класс auth работает с sql-классом.