网站转载内容太多(PHP方法太多参数的解决办法:1、定义一个BookModel类)

优采云 发布时间: 2021-12-09 13:13

  网站转载内容太多(PHP方法太多参数的解决办法:1、定义一个BookModel类)

  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,

];

}

}

  它运作良好!但是总觉得不是很优雅,调用这个方法的时候,鬼知道参数的顺序是什么!

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

  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中文网。转载请注明出处。感谢您的尊重!如果您有任何疑问,请与我们联系

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线