Как автоматизировать генерацию свойств для класса в phpstorm?

Если я реализую класс, который получает некоторые сервисы, мне нужно написать большую часть кода:

<?php
namespace Hn\AssetDbBundle\Services;

use Psr\Log\LoggerInterface;
use Symfony\Bundle\TwigBundle\TwigEngine;
use Symfony\Component\HttpKernel\KernelInterface;

/**
* Class SomeNewService
* @package Hn\AssetDbBundle\Services
*/

class SomeNewService {
/**
* @var TwigEngine
*/
private $engine;
/**
* @var KernelInterface
*/
private $kernel;
/**
* @var LoggerInterface
*/
private $logger;

public function __construct(TwigEngine $engine, KernelInterface $kernel, LoggerInterface $logger) {
$this->engine = $engine;
$this->kernel = $kernel;
$this->logger = $logger;
}
}

Это кажется излишним. Есть ли способ уменьшить количество кода, который я должен написать? Есть ли живой шаблон для инициализации полей или я могу автоматически сгенерировать большую часть этого блока?

5

Решение

Вы можете использовать Initialize field особенность.

Таким образом, вам нужно только написать метод конструктора следующим образом:

class SomeNewService {
public function __construct(TwigEngine $engine, KernelInterface $kernel, LoggerInterface $logger) {
}
}

Затем вы можете использовать поля инициализации. Получить курсор над одним свойством конструктора, затем в MacOS использовать Alt + Войти.

Это выглядит примерно так:

Функция инициализации полей

После того, как вы нажмете Enter, вы увидите список свойств, которые вы можете выбрать сдвиг и клавиши со стрелками. Выбрав все свойства, ваш код будет выглядеть так:

    class SomeNewService {
/**
* @var TwigEngine
*/
private $engine;
/**
* @var KernelInterface
*/
private $kernel;
/**
* @var LoggerInterface
*/
private $logger;

/**
* @param TwigEngine $engine
* @param KernelInterface $kernel
* @param LoggerInterface $logger
*/
public function __construct(TwigEngine $engine, KernelInterface $kernel, LoggerInterface $logger) {
$this->engine = $engine;
$this->kernel = $kernel;
$this->logger = $logger;
}
}
19

Другие решения

Вы также можете сделать наоборот, сначала определив свойства, а затем в меню «Создать» (Cmd + N) использовать «Конструктор».

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector