Как автоматизировать создание свойств для класса в 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; } } 

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

Вы можете использовать функцию Initialize field .

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

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

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

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

Инициализация полей

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

  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; } } 

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