How to automate the creation of properties for a class in phpstorm?

If I implement a class that receives some services, I have to write this body of code:

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

That seems redundant. Is there a way to reduce the amount of code I have to write? Is there a live template for initializing the fields, or can I auto-generate the main part of this block otherwise?

+4
source share
2 answers

You can use the function Initialize field.

Thus, you need to write a constructor method as follows:

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

. , MacOS Alt + Enter.

:

Initalize fields feature

, 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;
    }
}
+15

, , "" (Cmd + N) "".

+2

All Articles