【问题标题】:PHPLint ERROR: property `SimpleXMLElement::$error' does not exist or not visiblePHPLint 错误:属性 `SimpleXMLElement::$error' 不存在或不可见
【发布时间】:2011-06-16 17:13:39
【问题描述】:

全部,

我正在使用 PHPLint 评估我正在编写的 PHP 脚本,它返回以下错误:

“错误:属性 `SimpleXMLElement::$error' 不存在或不可见”。

引用的代码如下所示:

$this->_xmlResponse = new SimpleXMLElement($resultString);

if (($this->_xmlResponse !== NULL) && ($this->_xmlResponse->error))

而 _xmlResponse 是一个类变量,声明如下:

private /*. SimpleXMLElement .*/ $_xmlResponse = NULL;

SimpleXMLElement 类的工作方式是使用 -> 运算符按名称引用 XML 元素。所以我指的是 SimpleXMLElement 对象中的“错误”元素。

我也遇到这样的错误:

错误:`->' 运算符应用于混合类型的值

当访问这样的元素时:

print ' by ' . htmlentities($status->user->screen_name) . '</h6>';

代码工作正常,但 PHPLint 仍然给出错误。我查看了 PHPLint 参考手册,但我无法确定 PHPLint 是否无法解析 SimpleXMLElement,或者这是否真的是一个潜在问题。谁能解释这个 PHPLint 错误?也许我需要做一些类型转换?

【问题讨论】:

    标签: php simplexml lint


    【解决方案1】:

    您提出了两个不同的问题。首先,SimpleXMLElement(从 PHP 5.3.6 开始)没有错误属性。请参阅文档here。如果您阅读构造函数文档,您会发现检测错误的正确方法是捕获构造函数抛出的异常。第二个错误最有可能发生在 $status(或 $status->user)上有一个 @mixed PHPDocumentor 注释,它被 PHPLint 使用。将注释更改为 @object 应该可以解决您的问题。

    【讨论】:

    • bmatheny, $this->_xmlResponse->error 的意思是“在 SimpleXMLElement 对象中获取 XML 元素,名为“error”。SimpleXMLElement 包含已解析的 XML,您可以通过每个 XML 元素的名称访问它。“error”是从我解析的 XML 中,SimpleXMLElement 对象实例中确实存在的有效 XML 元素的名称。代码工作正常,但 PHPLint 抱怨它。我得到的“不可见”错误是由 PHPLint 产生的,它不是由 SimpleXMLElement 对象类中的代码生成。
    • 明白。第二条评论仍然相关。第一种情况下的 PHPLint 使用反射类来确定该属性是否存在并且它认为它不存在(这在静态上下文中是正确的)。我仍然认为第二个问题是基于注释的,但它可能是同类问题的症状(反射显示没有这样的成员)。
    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 2019-08-05
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2019-11-10
    相关资源
    最近更新 更多