@Kerm

Symfony 3.3 не понимаю как правильно вызвать функцию сервиса?

Простите я жутко туплю.

Есть сервис:

namespace AppBundle\Services;

use Doctrine\DBAL\Connection;

class Permission extends BaseService
{
    /**
     * @var Connection
     */
    private $connection;


    /**
     * Permission constructor.
     * @param mixed ...$args
     */
    public function __construct(...$args)
    {
        parent::__construct(...$args);
        $this->connection = $this->em->getConnection();
    }

    /**
     * @param string $role_name
     * @return array
     */
    public function getPermissionsByRoleName(string $role_name): array
    {
        $q = $this->connection->prepare('SELECT * FROM `permissions` WHERE `roleName` = ":roleName";');
        $q->bindValue('roleName', $role_name);
        $q->execute();

        return $q->fetchAll();
    }
}


Он расширяет класс:

namespace AppBundle\Services;

use Doctrine\Bundle\DoctrineBundle\Registry;

class BaseService
{
    /**
     * @var Registry
     */
    protected $em;
    /**
     * @var Configure
     */
    protected $config;
    /**
     * @var \AppKernel
     */
    protected $kernel;

    /**
     * Configure constructor.
     * @param Registry $em
     * @param Configure $configure
     * @param \AppKernel $kernel
     */
    public function __construct(Registry $em, Configure $configure, \AppKernel $kernel)
    {
        $this->em = $em;
        $this->config = $configure;
        $this->kernel = $kernel;
    }
}


Мне нужно вызвать метод getPermissionsByRoleName() проблема в том что я не знаю что мне нужно передать при вызове класса, чтобы все заработало, в конструкторе есть три аргумента и чтобы и как бы я не пытался у меня не выходит сообразить как правильно и что нужно передать...

Я пытался вот примерно так вызвать класс: но все равно ошибка что я не чего не передаю при вызове класса(
$i = new Permission(new Registry, new Configure, new \AppKernel);
$i->getPermissionsByRoleName('....');
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
deniev
@deniev
Я работаю на 4.4, в моем случае я вызывал бы в контроллере таким образом:

/**
* @Route("/", name="app_home", methods={"GET"})
* @param Permission $permission
*/
public function index(Permission $permission)
{
    $permission->getPermissionsByRoleName('role_name');
}


Если вызывал бы в другом сервисе или в форме и прочее то через __construct:

private $permisson;

public function __construct(Permission $permission)
{
   $this->permisson = $permission;
}

public function myFunc()
{
    $this->permisson->getPermissionsByRoleName('role_name');
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы