我們在編寫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...