我正在使用PHPStorm,并且已经编写了一个利用SimpleXML类的类。一切都很好,除了当我遍历一个XML字符串时,我会得到“未定义的属性”警告。
$xml = simplexml_load_string($string); //Returns SimpleXML Element
echo $xml->childElement; //PHPStorm reports "Undefined Property我相信这是因为在PHPStorm中没有正确定义这些神奇的属性。有没有人知道周围有什么不错的小工作?这让我很恼火,因为我对拥有整洁的代码(和IDE)是书生气十足的,而且在一个类上出现警告也太可怕了!
发布于 2012-03-15 14:06:34
我想我已经解决了。如果我将大括号内的节点封装为字符串,PHPStorm将忽略这些节点。
echo $xml->{'Parent'}->{'ChildElement'};例如,这样做的好处是在遇到带有连字符的XML标记时保持一致。$xml->{'Parent-Node'}
发布于 2012-03-12 19:19:16
到目前为止,我还没有找到解决办法,只是创建了一个带有相关属性和var- type -提示变量的类型:
class myXmlStoredValueObject {
/* @var string */
public $childElement;
}
$xml = simplexml_load_string($string); //Returns SimpleXML Element
/* @var $xml myXmlStoredValueObject */
echo $xml->childElement;当然,这并不总是适用/可行的,stdClass有一个骗局
$xml = simplexml_load_string($string); //Returns SimpleXML Element
/* @var $xml stdClass */
echo $xml->childElement;您不需要声明任何具体类型来使提示消失。
还有其他不足之处,你仍然会遇到foreach的问题,例如,你需要再次使用var-type-hint。
发布于 2018-12-13 17:38:01
要摆脱恼人的警告,您有以下几种选择:
1)清晰且可读:在项目中的某个地方定义一个存根类:
class myXmlPhpRepresentation {
/** @var string */
public $childElement;
/** @var number */
public $anotherXmlProperty;
}您不需要需要该类,只需将其放在项目文件夹中,以便IDE进行索引即可。然后只需使用PhpDoc将该类与SimpleXMLElement“混合”:
/** @var myXmlPhpRepresentation|SimpleXMLElement $xml */
$xml = simplexml_load_string($string);
echo $xml->childElement;这是一个很好的实践:您将拥有一个正确定义和可读的xml的php表示,这将有助于代码自动完成和删除警告。
2) 禁止显示代码行上的警告:
/** @noinspection PhpUndefinedFieldInspection */
echo $xml->childElement;警告->检查上的Alt+Enter ...options -> Suppress for语句
这不是一种非常干净的方式,但检查将帮助您完成项目的其余部分。
3) 禁用整个检查。
我想这是一种糟糕的做法,但一些检查可能是固执己见的。
https://stackoverflow.com/questions/9666019
复制相似问题