php函式引數過多 PHP方法引數過多優化方案

2021-10-22 19:14:22 字數 2663 閱讀 9765

我們在編寫php方法時,通常有若干個引數,就像下面的**:

class book

public function create($name, $cateid, $author)

$params = [

"name" => $name,

"cateid" => $cateid,

"author" => $author

沒有任何問題。

但是,隨著業務的發展,引數可能會不斷增加。就像上面的例子,建立一本書剛開始只有name/cateid/author三個引數,慢慢可能就變成了下面這樣:

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,

it works well!但是看起來總覺得不太優雅,當你呼叫這個方法的時候,鬼才知道引數的順序是怎麼樣的!

如何優化呢?我們可以嘗試把引數物件化。請看下面的**:

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的資料結構是明確的,使用起來非常方便。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(),

看,物件導向程式設計的優勢在這裡凸顯出來了!

PHP引數過濾的函式

stripslashes stripslashes 反引用乙個引用字串 說明string stripslashes string str 反引用乙個引用字串。note 如果 magic quotes sybase 項開啟,反斜線將被去除,但是兩個反斜線將會被替換成乙個。乙個使用範例是使用 php 檢...

java中如何應對構造函式引數過多

我們在書寫乙個類的時候,常常會出現乙個類的屬性有很多,那麼就有可能存在這種情況,有一些屬性是必須存在的,但是有一些屬性是非必須的,根據實際業務來確定。那麼這種情況我們該怎麼處理類的建構函式呢?總不可能為每一種情況都來寫乙個建構函式吧?這樣 太冗餘了,在new物件的時候也容易出錯。我們可以通過使用靜態...

php不定引數方法(函式)和可選引數方法(函式)

寫 的時候經常會用到方法,而且往往還是帶有引數的方法,這些對我們來說都不陌生,然而有時候需要使用的方法引數的個數不確定,這樣我們就需要改變一下寫法了,如下 function uncertainparam var export args parm fir name parm sec uncertain...