You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过合并类属性调用减少PHP代码行数?

实现PHP链式调用以精简代码行数

想要通过合并类方法调用的方式减少代码行数,现有如下PHP代码:

<?php 
$pagination = new Pagination();
$pagination->setLink("$appDir/category/?c=$c&p=%s");
$pagination->setPage($p);
$pagination->setSize($size);
$pagination->setTotalRecords($total);
$navigation = $pagination->create_links();
?>

期望改写为如下精简的链式调用形式:

$pagination = new Pagination();
$pagination->setLink("$appDir/category/?c=$c&p=%s");
$navigation = $pagination->setPage($p)->setSize($size)->setTotalRecords($total)->create_links();

实现方法

要达成这种链式调用效果,只需修改Pagination类中的setter方法,让每个方法在完成赋值后返回当前对象实例$this。示例如下:

class Pagination {
    // 类属性
    private $page;
    private $size;
    private $totalRecords;
    private $link;

    public function setPage($page) {
        $this->page = $page;
        return $this; // 返回当前对象,支持链式调用
    }

    public function setSize($size) {
        $this->size = $size;
        return $this;
    }

    public function setTotalRecords($total) {
        $this->totalRecords = $total;
        return $this;
    }

    public function setLink($link) {
        $this->link = $link;
        return $this;
        // 注:如果需要,setLink也可以加入链式调用,把第二行代码合并到第三行
    }

    public function create_links() {
        // 生成导航链接的逻辑
        return '生成的导航HTML';
    }
}

这样修改后,就可以通过->连续调用多个方法,大幅精简代码行数。

内容的提问来源于stack exchange,提问作者Ziad Nassar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:34:51