gpt4 book ai didi

php - 流体接口(interface)如何返回 $this 和值?

转载 作者:可可西里 更新时间:2023-10-31 23:22:08 25 4
gpt4 key购买 nike

我对 OOP 比较陌生,所以浏览 Simple HTML DOM 的文档时我想知道它的方法如何使用方法链和返回值/对象的常规行为。

例如我可以这样做:

 $html = new simple_html_dom();
$html -> find('something'); // Returns object or array of objects

但我也可以:

 $html -> find('something') -> find('something_else');

如果我正确理解方法链接,这意味着 find() 返回 $this 即它本身。

此外,我的理解是使用方法链接返回 $this,之后使用 getter 方法实际返回一个您可以使用/想要的值。例如:

$object -> add(1) -> add(2) -> getNumber();

我在这里错过了什么?提前致谢!

最佳答案

实际上,在 find 的返回值上调用 find 是没有意义的,因为该返回值应该是一个数组。

您最终可以向您的find(string, array&) 添加第二个参数,这样您就可以:

$result1 = [];
$resilt2 = [];

$html -> find('something', $result1)
-> fint('something else', $result2);

var_dump($result1, $result2);

与:

public function find($search, & $output) {
$output = ...
return $this;
}

看你的口味。链式调用仅在您要在同一对象上调用多个方法(不返回任何内容)时才有用,以避免每次都重写变量名,从而使代码更短。

编辑:如果你想做类似的事情:

" $html -> find('div#results') -> find('li a'); "

你遇到了一个问题,因为 $html 代表一个 DOM,而 find 返回的值不是一个 DOM,而是一组结果。您的 find 函数最终可以创建并返回一个以 #result 作为根的较小的 DOM(这将是与 $html 属于同一类的对象,而不是数组),然后调用 find 将在该新根上执行搜索文档的根目录,但这看起来有点不直观。

关于php - 流体接口(interface)如何返回 $this 和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com