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

本文操作环境:Windows7系统、PHP7.1、Dell G3。
php方法太多参数怎么办?
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怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号