Maison  >  Article  >  développement back-end  >  Que faire si la méthode php a trop de paramètres

Que faire si la méthode php a trop de paramètres

藏色散人
藏色散人original
2021-11-25 09:44:313172parcourir

Solutions au trop grand nombre de paramètres dans la méthode PHP : 1. Objectiver les paramètres ; 2. Définir une classe BookModel ; 3. Modifier la méthode create et exiger que ses paramètres soient des classes BookModel ;

Que faire si la méthode php a trop de paramètres

L'environnement d'exploitation de cet article : système Windows7, PHP7.1, Dell G3.

Que dois-je faire si la méthode php a trop de paramètres ?

Solution d'optimisation pour les paramètres de méthode PHP excessifs

Lorsque nous écrivons des méthodes PHP, nous avons généralement plusieurs paramètres, tout comme le code suivant :

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

Il n'y a pas de problème.

Cependant, à mesure que l'entreprise se développe, les paramètres peuvent continuer à augmenter. Tout comme l'exemple ci-dessus, lors de la création d'un livre, il n'y a que trois paramètres : name/cateId/author Au fil du temps, cela peut devenir comme ceci :

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

Ça marche bien ! Mais cela semble toujours inélégant. Lorsque vous appelez cette méthode, seul le diable sait quel est l’ordre des paramètres !

Comment optimiser ? On peut essayer d'objectiver les paramètres. Veuillez regarder le code ci-dessous :

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

Ce qui précède définit une classe BookModel, qui contient certaines propriétés. Ensuite, nous modifions la méthode create et exigeons que son paramètre soit la classe BookModel. Étant donné que la structure des données de BookModel est claire, elle est très pratique à utiliser. Après avoir ajusté la méthode 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(),
        ];
    }
}

Regardez, les avantages de la programmation orientée objet sont mis en évidence ici !

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn