首頁 > 後端開發 > PHP問題 > php方法太多參數怎麼辦

php方法太多參數怎麼辦

藏色散人
發布: 2023-03-14 06:46:02
原創
3258 人瀏覽過

php方法太多參數的解決方法:1、把參數物件化;2、定義一個BookModel類別;3、對create方法進行改造,要求它的參數為BookModel類別即可。

php方法太多參數怎麼辦

本文操作環境: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.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板