Rumah >pembangunan bahagian belakang >masalah PHP >Apa yang perlu dilakukan jika kaedah php mempunyai terlalu banyak parameter

Apa yang perlu dilakukan jika kaedah php mempunyai terlalu banyak parameter

藏色散人
藏色散人asal
2021-11-25 09:44:313250semak imbas

Penyelesaian kepada masalah terlalu banyak parameter dalam kaedah PHP: 1. Objektifkan parameter; 2. Tentukan kelas BookModel 3. Ubah suai kaedah cipta dan memerlukan parameternya menjadi kelas BookModel

Apa yang perlu dilakukan jika kaedah php mempunyai terlalu banyak parameter

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP7.1, Dell G3.

Apakah yang perlu saya lakukan jika kaedah php mempunyai terlalu banyak parameter?

Penyelesaian pengoptimuman untuk terlalu banyak parameter kaedah PHP

Apabila kami menulis kaedah PHP, kami biasanya mempunyai beberapa parameter, seperti kod berikut:

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

Tiada soalan ditanya.

Walau bagaimanapun, apabila perniagaan berkembang, parameter mungkin terus meningkat. Sama seperti contoh di atas, apabila mencipta buku, terdapat hanya tiga parameter: nama/cateId/pengarang pada permulaan, tetapi secara beransur-ansur ia mungkin menjadi seperti ini:

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

Ia berfungsi dengan baik! Tetapi ia sentiasa kelihatan tidak elegan Apabila anda memanggil kaedah ini, hanya syaitan yang tahu apa susunan parameternya!

Bagaimana untuk mengoptimumkan? Kita boleh cuba untuk mengobjektifkan parameter. Sila lihat kod berikut:

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

Di atas mentakrifkan kelas BookModel, yang mengandungi beberapa sifat. Kemudian kami mengubah suai kaedah cipta dan memerlukan parameternya menjadi kelas BookModel. Memandangkan struktur data BookModel adalah jelas, ia sangat mudah untuk digunakan. Selepas melaraskan kaedah cipta:

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

Lihat, kelebihan pengaturcaraan berorientasikan objek diserlahkan di sini!

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Apa yang perlu dilakukan jika kaedah php mempunyai terlalu banyak parameter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn