> 백엔드 개발 > PHP 문제 > PHP 메소드에 매개변수가 너무 많으면 어떻게 해야 할까요?

PHP 메소드에 매개변수가 너무 많으면 어떻게 해야 할까요?

藏色散人
풀어 주다: 2023-03-14 06:46:02
원래의
3253명이 탐색했습니다.

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
        ];
    }
}
로그인 후 복사

문제 없습니다.

그러나 비즈니스가 발전함에 따라 매개변수가 계속 증가할 수 있습니다. 위의 예와 마찬가지로 책을 만들 때 이름/cateId/저자의 세 가지 매개변수만 있습니다. 시간이 지나면 다음과 같이 될 수 있습니다.

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의 데이터 구조가 명확하므로 사용이 매우 편리합니다. 생성 방법을 조정한 후:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿