Вход из репозитория в Symfony - PullRequest
       3

Вход из репозитория в Symfony

0 голосов
/ 03 сентября 2018

Я отслеживаю странную ошибку в приложении Symfony 2, и я хотел бы знать, есть ли способ распечатать сообщения журнала из файла PHP репозитория. Например:

class OrderEntityRepository extends EntityRepository
{
    /**
    * 
    * @param mixed $filter
    * @return type
    */ 
    public function findByCriteria($filter) {
        [...]

        /* I'D LIKE TO LOG SOME VARIABLES FROM HERE */
    }
}

Я пытался использовать error_log(), но ничего не происходит.

Возможно ли это? Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

на symfony 3.8 у меня

class BlahRepository extends ServiceEntityRepository
{

    /* @var ContainerInterface $container */
    private $container;

    /* @var LoggerInterface $logger */
    private $logger;

    public function __construct(RegistryInterface $registry, ContainerInterface $container, LoggerInterface $logger)
    {
        parent::__construct($registry, Blah::class);
        $this->container = $container;
        $this->logger = $logger;
    }
}

и я могу использовать $this->logger->info("text")

Я думаю, что трюк может продолжаться ServiceEntityRepository

0 голосов
/ 03 сентября 2018

Это возможно, но обычно это не очень хорошая практика. Хорошая вещь, которую нужно сделать, это отправить обратно результат репозитория вашему контроллеру или службе, и вы регистрируете от них ошибку или что-то еще.

Но если вы все еще хотите это сделать, репозиторий подобен сервисам (когда вы реализуете ServiceEntityRepository , см. Этот слайд для получения дополнительной информации ). Если вы хотите зарегистрировать что-то конкретное внутри, вы должны добавить LoggerInterface в конфигурацию вашего репозитория (как вы это делаете со службой).

В вашем service.yml (или xml), если вы не используете autowire:

Your\Repository:
    arguments: ['@logger']

В вашем классе хранилища:

/**
 * @var LoggerInterface
 */
protected $logger;


public function __construct(LoggerInterface $logger)
{
    $this->logger = $logger;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...