PHPメソッドのパラメータが多すぎる場合の対処方法

藏色散人
リリース: 2023-03-14 06:46:02
オリジナル
3223 人が閲覧しました

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 の 3 つだけですが、時間が経つと次のようになります:

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート