gpt4 book ai didi

phpstorm - 如何告诉 PhpStorm 实现细节? (魔法方法)

转载 作者:行者123 更新时间:2023-12-02 10:23:41 25 4
gpt4 key购买 nike

我有一个对象“User”,其属性的可访问性被声明为 protected ,但可以通过魔术 __set-method 直接设置。

enter image description here

现在,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 中的外观:

enter image description here

我的目标:

要么让 PhpStorm“理解”设计,要么只是去掉那些烦人的红色标记,同时不影响除此问题之外的错误检测。

最佳答案

现在可以在 PHPStorm 3 中使用:)

不幸的是,这是我们跟踪器中的一个开放请求,请参阅 http://youtrack.jetbrains.net/issue/WI-4468

现在避免此警告的唯一方法是将@property 添加到$user 的类声明中。即

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

关于phpstorm - 如何告诉 PhpStorm 实现细节? (魔法方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7645485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com