如何通过合并类属性调用减少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
相关产品推荐
相关产品推荐

