Magento 2:Limpeza de Dependências não utilizadas
Pergunta
Alguém sabe de um código-limpeza/ferramenta de análise que gostaria de informar PHP Magento 2 programador que DI argumentos não estão sendo usados?
Por exemplo, uma ferramenta que iria olhar para a seguinte classe
<?php
namespace Namespace\Module\Controller\V1;
class MyClass extends \Magento\Framework\App\Action\Action
{
protected $resultJsonFactory;
protected $metadataService;
protected $urlModel;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
\Namespace\Module\Helper\Api $apiHelper,
) {
parent::__construct($context);
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
$this->metadataService = $metadataServiceInterface;
}
public function execute()
{
$result = $this->resultJsonFactory->create();
return $result->setData($items);
}
}
e diga-nos o que
A classe não usar o
$urlModel
propriedadeA classe usa apenas o
$metadataService
propriedade ao atribuir o construtor
Dado o quanto do Magento programação envolve "tente esta classe, não, bem, talvez essa classe", eu estou achando que eu deixar para trás gigante de construtores com dependências eu sou não usa mais.Ter uma ferramenta para ajudar a limpar isso seria ótimo.
Solução
Sobre o urlModel
campo, é possível obter aviso se a sua visibilidade é definida para private
e a bagunça detector é configurado em PHPStorm com dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml
.Caso contrário, há uma chance de que essa propriedade é usada na criança classes e bagunça detector não verifica.
Caso metadataService
não está coberto, porque ele é inicializado e, portanto, considerado como usado.É possível verificar rapidamente a cada campo em uma classe usando "Encontrar usos" recurso em PHP Tempestade, se não há 'ler' usos então o mais provável é que ele pode ser removido com segurança.
Conselho geral é configurar o PHP MD e PHP CS (código sniffer) com os mesmos arquivos de configuração que são utilizados pelo Magento ensaios estáticos, também faz sentido para definir a gravidade de Erro (para PHP Tempestade sublinha erros com a onda vermelha linha).Para o código de sniffer ele está localizado aqui dev/tests/static/testsuite/Magento/Test/Php/_files/phpcs/ruleset.xml