• 技术文章 >后端开发 >PHP问题

    php方法太多参数怎么办

    藏色散人藏色散人2021-11-25 09:44:31原创53

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

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

    php方法太多参数怎么办?

    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视频教程

    以上就是php方法太多参数怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php方法 参数
    上一篇:linux 没有php.ini 怎么办 下一篇:php安装没有phpfpm怎么办
    VIP会员

    相关文章推荐

    • php pdo参数化查询怎么实现• php 得不到参数怎么办• php怎么获取函数有几个参数• php怎么获取当前方法的参数值• php安装 liunx参数有哪些

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网