При настройке конфигурации Rollbar Monolog одним из параметров, которые можно установить, является функция person_fn
. Ожидается, что эта конфигурация Rollbar будет своего рода «вызываемой», которая при вызове будет возвращать информацию о пользователе.
Чтобы получить информацию о текущем пользователе, этому методу потребуется обработчик сеанса, чтобы получить пользователя, вошедшего в систему в данный момент. Я могу написать сервис, который делает это:
<?php
class UserService {
private $session;
public function __construct(SessionInterface $session) {
$this->session = $session;
}
public function RollbarUserFn() {
$u = $this->session->get('current_user');
return array(
'id' => $u['id'],
'username' => $u['username']
);
}
}
Теперь, если просто использовать call_user_func
, метод RollbarUserFn
не является статическим (поскольку у него есть зависимость), поэтому нельзя использовать "UserService::RollbarUserFn"
(строку), а скорее создать его экземпляр и передать объект в:
$us = new UserService($sessionInterface);
call_user_func(array($us, 'RollbarUserFn'));
Но как я могу сделать это эквивалентно в файле конфигурации YAML? Я пробовал что-то вроде:
monolog:
handlers:
rollbar:
type: rollbar
token: '123123123'
config:
environment: '%env(APP_ENV)%'
person_fn: [ '@UserService', 'RollbarUserFn' ]
Но это выдает ошибку, что узел конфигурации person_fn
должен быть скаляром, а не массивом.