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

藏色散人
Libérer: 2023-03-14 06:46:02
original
3217 Les gens l'ont consulté

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
        ];
    }
}
Copier après la connexion

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,
        ];
    }
}
Copier après la connexion

Ç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;
    }
}
Copier après la connexion

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(),
        ];
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal