在PHP中进行方法链接时调用不同的进程?

时间:2011-06-03 10:46:47

标签: php methods domdocument chaining

首先,抱歉我有缺陷的英语和愚蠢:O

我只想知道在方法链中实现这一目标的任何程序。根据DOMDocument类,如果我们执行方法链接,则相应地更改字符序列:

$dom = new DOMDocument();

$applicant = $dom->createElement('applicant');

$name = $dom->createElement('name');
$firstname = $dom->createElement('firstname', 'Joe');
$middlename = $dom->createElement('middlename', 'Johnson');
$lastname = $dom->createElement('lastname', 'Smith'); 

$dom->appendChild($applicant);
$applicant->appendChild($name);
    $name->appendChild($firstname);
    $name->appendChild($middlename);
$name->appendChild($lastname);

// OUTPUT

<applicant>
   <name>
      <firstname>Joe</firstname>
      <middlename>Johnson</middlename>
      <lastname>Smith</lastname>
   </name>
</applicant>

如果我这样做

$dom->appendChild($applicant);
$applicant->appendChild($name);
        $name->appendChild($firstname)
             ->appendChild($middlename);
$name->appendChild($lastname);

// OUTPUT

<applicant>
   <name>
      <firstname>
           Joe
           <middlename>Johnson</middlename>
      </firstname>
           <lastname>Smith</lastname>
   </name>
</applicant>

- 那怎么样?

2 个答案:

答案 0 :(得分:3)

appendChild会返回附加的子项,因此您的下一个appendChild会对该返回值执行操作。

因此,在您的第一个示例中,您始终在$name上的$name$firstname上的{{1}}两次工作{/ 1}}。

请参阅:http://www.php.net/manual/en/domnode.appendchild.php

答案 1 :(得分:0)

不太清楚你的意思。

无论如何链接,因为你可能知道它是这样做的:

public function method() {
  //> Code
  return $this;
}

如果你需要一种返回另一种对象的方法,它就像这样:

public function method() {
  //> Code
  return new ObjectOtherTypeWhatEver;
}

当然你可以返回另一个像这样的对象的另一个实例(appendChild方法是什么):

public function method($object) {
  //> Code
  return $object;
}