Я работаю над проектом.У меня есть собственный валидатор, который в основном проверяет целостность данных в моей базе данных перед сохранением новой записи.Поэтому для этой проверки мне нужен доступ к менеджеру сущностей Doctrine.Ниже приведен мой код.
CustomValidator.php
<?php
namespace Custom\Validator;
use ....
/**
* Class CustomValidator
* @package Custom\Validator
*/
class CustomValidator extends AbstractModel
{
public function validate()
{
//my validation rules
}
}
Этот класс AbstractModel в основном реализует ContainerAwareInterface, как показано ниже:
AbstractModel.php
<?php
namespace Custom\Model;
use ....
abstract class AbstractModel implements ContainerAwareInterface
{
/**
* @var ContainerInterface
*/
protected $container;
public function setContainer(ContainerInterface $container)
{
$this->container = $container;
}
/**
* @return ContainerInterface
*/
protected function getContainer()
{
return $this->container;
}
/**
* @return ObjectManager
*/
public function getObjectManager()
{
return $this->getContainer()->get('doctrine')->getManager();
}
/**
* @param $entityClass
* @return ObjectRepository
*/
public function getRepository($entityClass)
{
return $this->getObjectManager()->getRepository($entityClass);
}
}
Внутри моего service.yml
файла я определил зависимости AbstractModel, как показано ниже:
services:
custom.abstract_model:
class: Custom\Model\AbstractModel
abstract: true
public: true
calls:
- [setContainer, ["@service_container"]]
Теперь, когда я пытаюсь запустить валидатор, яошибка ниже:
Call to a member function get() on null
Что указывает на эту строку внутри класса AbstractModel.
return $this->getContainer()->get('doctrine')->getManager();
Что-то не так с моей реализацией?Я попытался выполнить поиск, но мне не удалось найти какое-либо полезное решение.
Обновление
Мне кажется, я не объяснил 10% всего сценария, и что 10% быложизненная часть.Я действительно использовал это CustomValidator
внутри CustomCommand
.Это была основная проблема, я объясню ниже, если кто-нибудь столкнется с подобной проблемой, как я позже.