Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die PHP-Methode zu viele Parameter hat?

Was tun, wenn die PHP-Methode zu viele Parameter hat?

藏色散人
藏色散人Original
2021-11-25 09:44:313172Durchsuche

Lösungen für zu viele Parameter in der PHP-Methode: 1. Objektivieren Sie die Parameter. 2. Definieren Sie eine BookModel-Klasse. 3. Ändern Sie die Erstellungsmethode und verlangen Sie, dass ihre Parameter BookModel-Klassen sind.

Was tun, wenn die PHP-Methode zu viele Parameter hat?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP7.1, Dell G3.

Was soll ich tun, wenn die PHP-Methode zu viele Parameter hat?

Optimierungslösung für übermäßige PHP-Methodenparameter

Wenn wir PHP-Methoden schreiben, haben wir normalerweise mehrere Parameter, genau wie der folgende Code:

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

Es gibt kein Problem.

Im Zuge der Geschäftsentwicklung können sich die Parameter jedoch weiter erhöhen. Genau wie im obigen Beispiel gibt es beim Erstellen eines Buchs nur drei Parameter: Name/Kategorie-ID/Autor. Mit der Zeit kann es so aussehen:

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

Es funktioniert gut! Aber es wirkt immer unelegant, wenn man diese Methode aufruft, weiß nur der Teufel, wie die Reihenfolge der Parameter ist!

Wie optimiert man? Wir können versuchen, die Parameter zu objektivieren. Bitte schauen Sie sich den Code unten an:

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

Das Obige definiert eine BookModel-Klasse, die einige Eigenschaften enthält. Dann ändern wir die Methode „create“ und verlangen, dass ihr Parameter die Klasse „BookModel“ ist. Da die Datenstruktur von BookModel klar ist, ist die Verwendung sehr bequem. Nach dem Anpassen der Erstellungsmethode:

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

Sehen Sie, hier werden die Vorteile der objektorientierten Programmierung hervorgehoben!

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn die PHP-Methode zu viele Parameter hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn