2011-10-04 13 views
11

Tengo un objeto "Usuario" que tiene atributos cuya accesibilidad está declarada como protegida pero que se puede establecer directamente a través de un mágico método __set.¿Cómo decirle a PhpStorm sobre los detalles de implementación? (métodos mágicos)

enter image description here

señales Ahora PhpStorm esta aparente incompatibilidad con una gran columna de color rojo en el lado derecho.

¿Es posible explicarle a PhpStorm qué está pasando para que esto no se muestre como un error más?


EDIT:

utilizo PhpStorm 2.1.4

bien aquí es un código que ejemplifica el tema (junto con la solución hasta el momento sugerido de Alexey, que por desgracia no hace para mí):

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

prueba.php

<?php 
require "c.php"; 

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

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

y la salida:

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

y cómo se ve como en PhpStorm:

enter image description here

mi objetivo:

o bien tener PhpStorm "comprender" el diseño o simplemente deshacerse de esas molestas marcas rojas en todas partes, mientras que no afecte a la detección de errores, aparte de este problema.

Respuesta

8

esto es ahora trabajando en PhpStorm 3 :)

Por desgracia, esta es una petición abierta en nuestro rastreador, ver http://youtrack.jetbrains.net/issue/WI-4468

La única manera de evitar esta advertencia ahora, es añadir a @property declaración de clase de $ usuario. es decir,

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

la solución alternativa no cambia que PHPStorm interprete el acceso como defectuoso. – Raffael

+1

Bueno, agregué un ejemplo completo. Y soy el desarrollador de estos controles en IDE. Si no funciona para usted, vaya a nuestro rastreador y proporcione su código para reproducir. –

+1

Esto ahora está funcionando para PHPStorm 3 :) – Raffael

Cuestiones relacionadas