中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php方法太多參數的解決方法

發布時間:2021-11-25 10:05:33 來源:億速云 閱讀:307 作者:小新 欄目:編程語言

這篇文章主要介紹了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方法太多參數的解決方法”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

湄潭县| 舟山市| 乐平市| 个旧市| 高青县| 曲靖市| 韶山市| 普兰县| 江山市| 彝良县| 介休市| 绥芬河市| 金秀| 双城市| 当阳市| 华池县| 苗栗县| 延边| 平陆县| 安吉县| 喜德县| 图木舒克市| 安陆市| 湖南省| 民权县| 彭泽县| 闵行区| 高阳县| 鹤庆县| 佛山市| 高青县| 鸡东县| 永昌县| 志丹县| 大悟县| 襄垣县| 松潘县| 敦化市| 禄劝| 九江县| 尼玛县|