溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php方法太多參數(shù)的解決方法

發(fā)布時(shí)間:2021-11-25 10:05:33 來源:億速云 閱讀:299 作者:小新 欄目:編程語言

這篇文章主要介紹了php方法太多參數(shù)的解決方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

php方法太多參數(shù)的解決辦法:1、把參數(shù)對(duì)象化;2、定義一個(gè)BookModel類;3、對(duì)create方法進(jìn)行改造,要求它的參數(shù)為BookModel類即可。

本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1、Dell G3。

PHP方法參數(shù)過多優(yōu)化方案

我們?cè)诰帉慞HP方法時(shí),通常有若干個(gè)參數(shù),就像下面的代碼:

Class Book
{
    public function create($name, $cateId, $author)
    {
        $params = [
            'name' => $name,
            'cateId' => $cateId,
            'author' => $author
        ];
    }
}

沒有任何問題。

但是,隨著業(yè)務(wù)的發(fā)展,參數(shù)可能會(huì)不斷增加。就像上面的例子,創(chuàng)建一本書剛開始只有name/cateId/author三個(gè)參數(shù),慢慢可能就變成了下面這樣:

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!但是看起來總覺得不太優(yōu)雅,當(dāng)你調(diào)用這個(gè)方法的時(shí)候,鬼才知道參數(shù)的順序是怎么樣的!

如何優(yōu)化呢?我們可以嘗試把參數(shù)對(duì)象化。請(qǐng)看下面的代碼:

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;
    }
}

上面定義了一個(gè)BookModel類,包含了一些屬性。然后我們對(duì)create方法進(jìn)行改造,要求它的參數(shù)為BookModel類。由于BookModel的數(shù)據(jù)結(jié)構(gòu)是明確的,使用起來非常方便。create方法調(diào)整后:

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(),
        ];
    }
}

看,面向?qū)ο缶幊痰膬?yōu)勢(shì)在這里凸顯出來了!

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php方法太多參數(shù)的解決方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI