您好,登錄后才能下訂單哦!
這篇文章主要介紹了php方法太多參數(shù)的解決方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
php方法太多參數(shù)的解決辦法:1、把參數(shù)對(duì)象化;2、定義一個(gè)BookModel類;3、對(duì)create方法進(jìn)行改造,要求它的參數(shù)為BookModel類即可。
本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1、Dell G3。
PHP方法參數(shù)過多優(yōu)化方案
我們?cè)诰帉慞HP方法時(shí),通常有若干個(gè)參數(shù),就像下面的代碼:
Class Book { public function create($name, $cateId, $author) { $params = [ 'name' => $name, 'cateId' => $cateId, 'author' => $author ]; } }
沒有任何問題。
但是,隨著業(yè)務(wù)的發(fā)展,參數(shù)可能會(huì)不斷增加。就像上面的例子,創(chuàng)建一本書剛開始只有name/cateId/author三個(gè)參數(shù),慢慢可能就變成了下面這樣:
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!但是看起來總覺得不太優(yōu)雅,當(dāng)你調(diào)用這個(gè)方法的時(shí)候,鬼才知道參數(shù)的順序是怎么樣的!
如何優(yōu)化呢?我們可以嘗試把參數(shù)對(duì)象化。請(qǐng)看下面的代碼:
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; } }
上面定義了一個(gè)BookModel類,包含了一些屬性。然后我們對(duì)create方法進(jìn)行改造,要求它的參數(shù)為BookModel類。由于BookModel的數(shù)據(jù)結(jié)構(gòu)是明確的,使用起來非常方便。create方法調(diào)整后:
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(), ]; } }
看,面向?qū)ο缶幊痰膬?yōu)勢(shì)在這里凸顯出來了!
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php方法太多參數(shù)的解決方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。