2011-10-04 10 views
11

Ho un oggetto "Utente" con attributi la cui accessibilità è dichiarata protetta ma che può essere impostata direttamente tramite un metodo __set magico.Come comunicare a PhpStorm i dettagli di implementazione? (metodi magici)

enter image description here

segnali Ora PhpStorm questa incongruenza apparente con una grande colonna rossa sul lato destro.

È possibile spiegare a PhpStorm cosa sta succedendo, quindi questo non viene più visualizzato come errore?


EDIT:

Io uso PhpStorm 2.1.4

bene qui è un codice che esemplifica la questione (insieme con la soluzione finora suggerito da Alexey che purtroppo non fa per me):

c.php:

<?php 
/** 
* @property mixed $a 
*/ 
class c1 
{ 
    protected $a; 

    public function __construct() { $this->a = __CLASS__; } 

    public function __get($n) { return $this->{$n}; } 
} 

/** 
* @property $a mixed 
*/ 
class c2 
{ 
    protected $a; 

    public function __construct() { $this->a = __CLASS__; } 

    public function __get($n) { return $this->{$n}; } 
} 

test.php

<?php 
require "c.php"; 

$c1 = new c1(); 
var_dump($c1->a); 

$c2 = new c2(); 
var_dump($c2->a); 

e l'uscita:

string 'c1' (length=2) 
string 'c2' (length=2) 

e come appare come in PhpStorm:

enter image description here

il mio obiettivo:

sia avendo PhpStorm "capire" il disegno o semplicemente sbarazzarsi di quei fastidiosi segni rossi ovunque, mentre non compromettere il rilevamento degli errori a parte questo problema.

risposta

8

questo è ora lavorando in PhpStorm 3 :)

Purtroppo si tratta di una richiesta di apertura nel nostro tracker, vedere http://youtrack.jetbrains.net/issue/WI-4468

L'unico modo per evitare queste avvertenze ora, è quello di aggiungere @property a $ dichiarazione di classe dell'utente. Ad esempio

/** 
* @property $name string 
*/ 
class User { 
    protected $name; 
} 
$user = new User(); 
$user->name = "me"; 
+0

la soluzione alternativa non cambia che PHPStorm interpreta l'accesso come difettoso. – Raffael

+1

Bene, ho aggiunto un esempio completo. E io sono lo sviluppatore di questi assegni in IDE. Se non funziona per te, vai al nostro tracker e fornisci il codice da riprodurre. –

+1

Questo funziona ora per PHPStorm 3 :) – Raffael

Problemi correlati