加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 流体接口如何返回$this和值?

发布时间:2020-12-13 16:50:37 所属栏目:PHP教程 来源:网络整理
导读:我对OOP比较新,所以浏览Simple HTML DOM的文档我想知道它的方法如何使用方法链和返回值/对象的常规行为. 例如,我可以这样做: $html = new simple_html_dom(); $html - find('something'); // Returns object or array of objects 但我也可以这样做: $html
我对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函数最终可以创建并返回一个较小的DOM,其中#result作为根(这将是与$html相同的类的对象,而不是数组),然后调用find将对该新根执行搜索文档的根,但看起来有点不直观.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读