将元素传递给方法

时间:2013-05-27 18:42:24

标签: php simplexml

为了我自己的娱乐,我正在创建一个使用PHP SimpleXMLElement类的XML阅读器类。最终我将它作为库移植到CodeIgniter,以便我可以在将来的应用程序中使用它。但是,现在我正在使用vanilla PHP进行测试。我的最终目标是能够遍历XML文档。目前,我正在查看此Feed:http://rubygems.org/gems/sass/versions.atom

问题

我很难将信息传递到我自己的count()方法中。这是方法:

public function count($element) {
    $this->element = $element;
    return $this->xml->element->count();
}

上述方法的想法是允许任何人传入一个对象,它将返回一个int,用于标识特定元素具有的子节点数。通常,这可行:

$xml->title->count(); // returns 1, for example

尝试过什么

echo $xml->count('entry'); // always results in 0

public function count($element) {
    return $this->xml->$element->count();
}

echo $xml->count('entry'); // still results in 0

echo $xml->count($xml->entry); // Undefined property

问题

这样做的正确方法是什么?任何指导将不胜感激!以下是完整的课程:http://pastebin.com/VjhjGcaR

1 个答案:

答案 0 :(得分:1)

使用count()方法:

public function count($element) {
    return $this->xml->$element->count();
}

使用它像:

echo $xml->count('entry');

将在您的示例中使用ATOM文件打印201

你真的只是用foo来试试吗?如果是这样,那就解释了零结果。