我有一个名为“User”的对象,其属性的访问性被声明为受保护,但可以通过神奇的__set()方法直接设置。
现在PhpStorm在右侧显示了一个大红色列来表示这个明显的不一致。
是否有可能向PhpStorm解释正在发生什么,以便不再将此显示为错误?
编辑:
我使用PhpStorm 2.1.4
下面是一些代码示例,说明了这个问题(以及Alexey迄今为止提出的建议解决方法,但对我来说很遗憾它行不通):
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);
并且输出:
string 'c1' (length=2)
string 'c2' (length=2)
以及在PhpStorm中的外观:
我的目标:
要么让PhpStorm“理解”设计,要么只是摆脱那些令人讨厌的红色标记,同时不影响除此问题之外的错误检测。
protected function foo($a, $b);
和public function __call($m, $p)
。我无法在不更改所有方法名称的情况下解决这个错误。 - Keyne Viana