首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPStorm和魔术方法

PHPStorm和魔术方法
EN

Stack Overflow用户
提问于 2012-03-12 19:14:33
回答 4查看 6.7K关注 0票数 6

我正在使用PHPStorm,并且已经编写了一个利用SimpleXML类的类。一切都很好,除了当我遍历一个XML字符串时,我会得到“未定义的属性”警告。

代码语言:javascript
复制
$xml = simplexml_load_string($string); //Returns SimpleXML Element

echo $xml->childElement; //PHPStorm reports "Undefined Property

我相信这是因为在PHPStorm中没有正确定义这些神奇的属性。有没有人知道周围有什么不错的小工作?这让我很恼火,因为我对拥有整洁的代码(和IDE)是书生气十足的,而且在一个类上出现警告也太可怕了!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-15 14:06:34

我想我已经解决了。如果我将大括号内的节点封装为字符串,PHPStorm将忽略这些节点。

代码语言:javascript
复制
echo $xml->{'Parent'}->{'ChildElement'};

例如,这样做的好处是在遇到带有连字符的XML标记时保持一致。$xml->{'Parent-Node'}

票数 9
EN

Stack Overflow用户

发布于 2012-03-12 19:19:16

到目前为止,我还没有找到解决办法,只是创建了一个带有相关属性和var- type -提示变量的类型:

代码语言:javascript
复制
class myXmlStoredValueObject {
     /* @var string */
     public $childElement;
}

$xml = simplexml_load_string($string); //Returns SimpleXML Element

/* @var $xml myXmlStoredValueObject */

echo $xml->childElement;

当然,这并不总是适用/可行的,stdClass有一个骗局

代码语言:javascript
复制
$xml = simplexml_load_string($string); //Returns SimpleXML Element

/* @var $xml stdClass */

echo $xml->childElement;

您不需要声明任何具体类型来使提示消失。

还有其他不足之处,你仍然会遇到foreach的问题,例如,你需要再次使用var-type-hint。

票数 10
EN

Stack Overflow用户

发布于 2018-12-13 17:38:01

要摆脱恼人的警告,您有以下几种选择:

1)清晰且可读:在项目中的某个地方定义一个存根类:

代码语言:javascript
复制
class myXmlPhpRepresentation {
   /** @var string */
   public $childElement;
   /** @var number */
   public $anotherXmlProperty;
}

您不需要需要该类,只需将其放在项目文件夹中,以便IDE进行索引即可。然后只需使用PhpDoc将该类与SimpleXMLElement“混合”:

代码语言:javascript
复制
/** @var myXmlPhpRepresentation|SimpleXMLElement $xml */
$xml = simplexml_load_string($string);
echo $xml->childElement;

这是一个很好的实践:您将拥有一个正确定义和可读的xml的php表示,这将有助于代码自动完成和删除警告。

2) 禁止显示代码行上的警告:

代码语言:javascript
复制
 /** @noinspection PhpUndefinedFieldInspection */
 echo $xml->childElement;

警告->检查上的Alt+Enter ...options -> Suppress for语句

这不是一种非常干净的方式,但检查将帮助您完成项目的其余部分。

3) 禁用整个检查。

我想这是一种糟糕的做法,但一些检查可能是固执己见的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9666019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档