【问题标题】:Instantiate an variable with a methods return object使用方法返回对象实例化变量
【发布时间】:2012-03-09 13:16:41
【问题描述】:

我一直在寻找几个小时,但我似乎无法理解为什么这不起作用。这是代码

我的目标是使用不同的方法来加载 XML 文档,并使用另一种方法来打印和管理该文档。

class ...

//Fetch and print xml document
    function fetchFromXMLDocument($XMLDocName) {
        $xmlDoc = new DOMDocument();
        $xmlDoc->load($XMLDocName);
        return $xmlDoc;

    }

在这里,我想将fetchFromXMLDocument() 的值添加到我的$he 变量中。 但它似乎不起作用?

function printXml($XMLDocName) {
   //this seems not to be right??       
    $he = fetchFromXMLDocument($XMLDocName);

    //after that this is what I want to do..
    // $items = $he->getElementsByTagName("item");
         ...
    }

有人知道为什么会这样吗?

【问题讨论】:

  • 你能解释一下什么似乎不起作用吗?
  • @jprofitt 似乎没有将该对象xmlDoc 设置为我的变量$he。也许这在 PHP 中没有意义,也许我错了,好像我在 java 上做过这个??
  • var_dump($he) 带给你什么?

标签: php dom object methods


【解决方案1】:

问题是函数fetchFromXMLDocument(); 在一个类中。

如果您从printXML 访问它的方法在同一个类中,那么您应该使用$this 运算符访问它。

function printXml($XMLDocName) {    
     $he = $this -> fetchFromXMLDocument($XMLDocName);
     ...
}

但是,如果您从printXML 访问它的方法在外部。然后首先你必须创建类的对象并访问它。

function printXml($XMLDocName) {    
     $obj = new yourxmlclassname();
     $he = $obj -> fetchFromXMLDocument($XMLDocName);
     ...
}

【讨论】:

    【解决方案2】:

    $xmlDoc 是一个 DomDocument 对象。你可能想要:

    $he = $xmlDoc->saveXML();
    

    【讨论】:

    • 但是$he 的方法与$xmlDoc 不同,我需要的是用另一种方法使用$xmlDoc 的内容而不是它所在的方法?
    • 哦,我明白了……您仍想将它用作 DomDocument 对象,而不是获取它的 XML 输出。 returning 像你一样应该给你。您确定返回的值是有效对象吗? (文件是否导入成功?)
    • 嘿,谢谢您的反馈。问题是我没有使用$this,因为我在课堂上这样做..
    【解决方案3】:

    如果是在课堂上,你不需要这样做

    $he = $this->fetchFromXMLDocument($XMLDocName)
    

    【讨论】:

    • 试试吧。你从来没有说过它不工作是怎么回事,所以这真的没有给我们太多的工作。如果您添加错误报告并让我们知道错误是什么,将会很有帮助。
    • 非常感谢,这就是问题所在:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 2018-05-28
    相关资源
    最近更新 更多