文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php方法太多参数的解决方法

2023-06-21 20:36

关注

这篇文章主要介绍了php方法太多参数的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

php方法太多参数的解决办法:1、把参数对象化;2、定义一个BookModel类;3、对create方法进行改造,要求它的参数为BookModel类即可。

本文操作环境:Windows7系统、PHP7.1、Dell G3。

PHP方法参数过多优化方案

我们在编写PHP方法时,通常有若干个参数,就像下面的代码:

Class Book{    public function create($name, $cateId, $author)    {        $params = [            'name' => $name,            'cateId' => $cateId,            'author' => $author        ];    }}

没有任何问题。

但是,随着业务的发展,参数可能会不断增加。就像上面的例子,创建一本书刚开始只有name/cateId/author三个参数,慢慢可能就变成了下面这样:

Class Book{    public function create($name, $cateId, $author, $year, $price, $publish, $country, $language)    {        $params = [            'name' => $name,            'cateId' => $cateId,            'author' => $author,            'year' => $year,            'price' => $price,            'publish' => $publish,            'country' => $country,            'language' => $language,        ];    }}

It works well!但是看起来总觉得不太优雅,当你调用这个方法的时候,鬼才知道参数的顺序是怎么样的!

如何优化呢?我们可以尝试把参数对象化。请看下面的代码:

class BookModel{    protected $name;    protected $cateId;    protected $author;    protected $year;    protected $price;    protected $publish;    protected $country;    protected $language;    public function getName()    {        return $this->name;    }    public function setName($name)    {        $this->name = $name;    }    public function getCateId()    {        return $this->cateId;    }    public function setCateId($cateId)    {        $this->cateId = $cateId;    }    public function getAuthor()    {        return $this->author;    }    public function setAuthor($author)    {        $this->author = $author;    }    public function getYear()    {        return $this->year;    }    public function setYear($year)    {        $this->year = $year;    }    public function getPrice()    {        return $this->price;    }    public function setPrice($price)    {        $this->price = $price;    }    public function getPublish()    {        return $this->publish;    }    public function setPublish($publish)    {        $this->publish = $publish;    }    public function getCountry()    {        return $this->country;    }    public function getLanguage()    {        return $this->language;    }    public function setLanguage($language)    {        $this->language = $language;    }}

上面定义了一个BookModel类,包含了一些属性。然后我们对create方法进行改造,要求它的参数为BookModel类。由于BookModel的数据结构是明确的,使用起来非常方便。create方法调整后:

Class Book{    public function create(BookModel $bookModel)    {        $params = [            'name' => $bookModel->getName(),            'cateId' => $bookModel->getCateId(),            'author' => $bookModel->getAuthor(),            'year' => $bookModel->getYear(),            'price' => $bookModel->getPrice(),            'publish' => $bookModel->getPublish(),            'country' => $bookModel->getCountry(),            'language' => $bookModel->getLanguage(),        ];    }}

看,面向对象编程的优势在这里凸显出来了!

感谢你能够认真阅读完这篇文章,希望小编分享的“php方法太多参数的解决方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯