日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...

發(fā)布時(shí)間:2025/3/8 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

比如有一個(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。