日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

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

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

比如有一個function()

function find($conditions = null, $sort = null,..(很多參數).., $fields = null, $limit = null)

現在我只要使用第一個和最后一個參數,一般都是

find('xxx','','','',...,'xxx')

很不好看,有沒有什么優雅一點的寫法呢?

回復內容:

比如有一個function()

function find($conditions = null, $sort = null,..(很多參數).., $fields = null, $limit = null)

現在我只要使用第一個和最后一個參數,一般都是

find('xxx','','','',...,'xxx')

很不好看,有沒有什么優雅一點的寫法呢?

分兩種情況討論這個問題。

如果你是想固定其中某幾個值

如果你是想讓其中某些參數有默認值

情況一:如果你是想提前固定其中某幾個參數的值

你可以對函數進行部分求值(柯里化),得到一個新的函數,后續使用的時候,使用新函數去操作。

而在柯里化的時候,可以自定義其中某些參數的值。

例如

// 原始的函數

function find($conditions = null, $sort = null,..(很多參數).., $fields = null, $limit = null)

// 柯里化后的函數

function curryFind($conditions, $limit) {

return find($conditions, "sort", ..., "fields", $limit);

}

情況二:如果你是想讓其中某些參數有默認值

可以講可選參數合并為一個數組。參數以數組形式傳入,與默認參數數組進行合并。

例如

function find($options) {

$defaultOptions = array(

'conditions' => 'c',

'sort' => 's',

...

'fields' => 'f',

'limit' => 'l'

);

$options = array_merge($defaultOptions, $options);

// do something.

}

這兩種情況并沒有很明顯的區別,只是處理多個參數的方法而已。根據你自己的需求來使用。

參考資料

http://stackoverflow.com/questions/1609985/is-it-possible-to-curry-method-calls-in-php

柯里化:http://en.wikipedia.org/wiki/Currying

如果一個函數一堆參數,本身就說明這個函數的設計有問題,盡早考慮重構吧。

如果實在沒辦法,可以考慮使用 call_user_func_array() 函數,構造一個數組傳進去就可以了。

帶一個 array 進去 ...

function find( array(

'conditions' => '1',

'sort' => '2',

// ....

'limit' => '3'

) );

沒有就不寫 ...

你把這個方法的最后一個參數拿到第二個參數的地方不就可以了。

function find($conditions = null, $limit = null,$sort = null,..(很多參數).., $fields = null)

function abc($str) {

parse_str($str,$arr);

$arr['key'];

}

$some = abc('key=1&p=2&some......');

// 使用 非固定函數

static function fun(){

$numargs = funcnumargs();//獲取參數個數;

$arglist = funcget_args();//獲取參數列表

}

//函數自己設計吧,s設計一個函數 把它帶入到老函數就好

funcgetargs 和 funcgetnums 函數

怎么下劃線沒了?

本條技術文章來源于互聯網,如果無意侵犯您的權益請點擊此處反饋版權投訴

本文系統來源:php中文網

總結

以上是生活随笔為你收集整理的php 参数 只用一次,php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。