php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
比如有一個(gè)function()
function find($conditions = null, $sort = null,..(很多參數(shù)).., $fields = null, $limit = null)
現(xiàn)在我只要使用第一個(gè)和最后一個(gè)參數(shù),一般都是
find('xxx','','','',...,'xxx')
很不好看,有沒有什么優(yōu)雅一點(diǎn)的寫法呢?
回復(fù)內(nèi)容:
比如有一個(gè)function()
function find($conditions = null, $sort = null,..(很多參數(shù)).., $fields = null, $limit = null)
現(xiàn)在我只要使用第一個(gè)和最后一個(gè)參數(shù),一般都是
find('xxx','','','',...,'xxx')
很不好看,有沒有什么優(yōu)雅一點(diǎn)的寫法呢?
分兩種情況討論這個(gè)問題。
如果你是想固定其中某幾個(gè)值
如果你是想讓其中某些參數(shù)有默認(rèn)值
情況一:如果你是想提前固定其中某幾個(gè)參數(shù)的值
你可以對(duì)函數(shù)進(jìn)行部分求值(柯里化),得到一個(gè)新的函數(shù),后續(xù)使用的時(shí)候,使用新函數(shù)去操作。
而在柯里化的時(shí)候,可以自定義其中某些參數(shù)的值。
例如
// 原始的函數(shù)
function find($conditions = null, $sort = null,..(很多參數(shù)).., $fields = null, $limit = null)
// 柯里化后的函數(shù)
function curryFind($conditions, $limit) {
return find($conditions, "sort", ..., "fields", $limit);
}
情況二:如果你是想讓其中某些參數(shù)有默認(rèn)值
可以講可選參數(shù)合并為一個(gè)數(shù)組。參數(shù)以數(shù)組形式傳入,與默認(rèn)參數(shù)數(shù)組進(jìn)行合并。
例如
function find($options) {
$defaultOptions = array(
'conditions' => 'c',
'sort' => 's',
...
'fields' => 'f',
'limit' => 'l'
);
$options = array_merge($defaultOptions, $options);
// do something.
}
這兩種情況并沒有很明顯的區(qū)別,只是處理多個(gè)參數(shù)的方法而已。根據(jù)你自己的需求來使用。
參考資料
http://stackoverflow.com/questions/1609985/is-it-possible-to-curry-method-calls-in-php
柯里化:http://en.wikipedia.org/wiki/Currying
如果一個(gè)函數(shù)一堆參數(shù),本身就說明這個(gè)函數(shù)的設(shè)計(jì)有問題,盡早考慮重構(gòu)吧。
如果實(shí)在沒辦法,可以考慮使用 call_user_func_array() 函數(shù),構(gòu)造一個(gè)數(shù)組傳進(jìn)去就可以了。
帶一個(gè) array 進(jìn)去 ...
function find( array(
'conditions' => '1',
'sort' => '2',
// ....
'limit' => '3'
) );
沒有就不寫 ...
你把這個(gè)方法的最后一個(gè)參數(shù)拿到第二個(gè)參數(shù)的地方不就可以了。
function find($conditions = null, $limit = null,$sort = null,..(很多參數(shù)).., $fields = null)
function abc($str) {
parse_str($str,$arr);
$arr['key'];
}
$some = abc('key=1&p=2&some......');
// 使用 非固定函數(shù)
static function fun(){
$numargs = funcnumargs();//獲取參數(shù)個(gè)數(shù);
$arglist = funcget_args();//獲取參數(shù)列表
}
//函數(shù)自己設(shè)計(jì)吧,s設(shè)計(jì)一個(gè)函數(shù) 把它帶入到老函數(shù)就好
funcgetargs 和 funcgetnums 函數(shù)
怎么下劃線沒了?
本條技術(shù)文章來源于互聯(lián)網(wǎng),如果無意侵犯您的權(quán)益請(qǐng)點(diǎn)擊此處反饋版權(quán)投訴
本文系統(tǒng)來源:php中文網(wǎng)
總結(jié)
以上是生活随笔為你收集整理的php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch梯度下降函数_Pytorc
- 下一篇: 协同工作php,PHPOA:灵活、高效、