2017-09-01 10 views
1

Je travaille avec une configuration simple pour les caractéristiques du fournisseur API. Chaque fournisseur travaille à partir d'un trait et d'une interface, déclarant la fonctionnalité et les fonctions requises, conformément à la documentation de PHP sur les deux déclarations respectives. Mon PhpStorm indexe clairement les fonctions d'interfaces et de traits, mais n'indexe pas les membres variables. Je les ai déclarés publics, protégés ou privés - rien ne semble fonctionner. Ils fonctionnent clairement dans l'environnement PHP7, mais mon PhpStorm pense que je les ai déclarés dynamiquement.PhpStorm: visibilité variable des membres avec la classe, basée sur l'interface et le trait

Fondamentalement, c'est ma configuration.

interface ProviderInterface 
{ 

    const TYPE_ELECTRICITY = 'electricity'; 

    const TYPE_GAS = 'gas'; 

    /** 
    * @param ContainerInterface $container 
    * 
    * @return void 
    */ 
    function setContainer(ContainerInterface $container); 

    /** 
    * @return Client|\SoapClient 
    */ 
    function client(); 

} 

trait ProviderTrait 
{ 

    /** 
    * @var string 
    */ 
    private $endpoint = ''; 


    public function setContainer($container) { 
     /** void for demo purposes */ 
    } 
} 


class Provider implements ProviderInterface 
{ 

    use ProviderTrait; 

    /** 
    * @var string 
    */ 
    private $username; 

    /** 
    * @var string 
    */ 
    private $password; 

    /** 
    * constructor. 
    * 
    * @param ContainerInterface $container 
    */ 
    final public function __construct(ContainerInterface $container) 
    { 
     $this->setContainer($container); 

     /** 
     * While $username and $password are declared within this class, the $endpoint is declared in the ProviderTrait. PHP works fine. PhpStorm ignores it and says it is declared "dynamically". 
     */ 
     $this->endpoint = $this->container->getParameter('api.endpoint'); 
     $this->username = $this->container->getParameter('api.username'); 
     $this->password = $this->container->getParameter('api.password'); 
    } 

Trait variable member declared dynamically

J'ai essayé de vider le cache ("Invalider & Restart") mais après un indice de la même chose se produit.

Quelqu'un a eu une idée?

+0

Quelle est votre version IDE? – LazyOne

+0

PhpStorm 01/02/2017 Build # PS-172.3544.41, construit le 2 Août, 2017 JRE: 1.8.0_152-release-915-b6 amd64 machine virtuelle Java: OpenJDK 64 bits serveur VM par JetBrains s.r.o de Windows 10 10.0 – ReSpawN

Répondre

2

Je n'étais pas au courant qu'il y avait une nouvelle version mineure disponible. Mis à jour à la version suivante a résolu mon problème complètement.

PhpStorm 2017.2.2 
Build #PS-172.3968.35, built on August 31, 2017 
JRE: 1.8.0_152-release-915-b11 amd64 
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 
Windows 10 10.0 

Symfony version plug-in 0.14.151 Annotations PHP de version 5.1

complètement fixe! Merci @LazyOne pour m'avoir indiqué dans la bonne direction.

numéro de référence @ JetBrains: https://youtrack.jetbrains.com/issue/WI-36285