比如有一个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中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...相关推荐

  1. python中函数的参数_Python小知识-Python中的函数参数(基础篇)

    0 总述 这个题目分为2篇,第一篇基本上是概念以及实例,有个相对系统的认识,第二篇想写的深入一些,不同参数类型的区别以及和c/c++的函数参数对比下异同-下面开始是第一篇的内容啦- Python中的函 ...

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

    分两种情况讨论这个问题. 如果你是想固定其中某几个值 如果你是想让其中某些参数有默认值 情况一:如果你是想提前固定其中某几个参数的值 你可以对函数进行部分求值(柯里化),得到一个新的函数,后续使用的时 ...

  3. android onfling参数,Android 屏幕手势滑动中onFling()函数的技巧分析

    关于如何处理手势操作以及那四个基本固定的顺序我就不讲解了,这里直接跳到我们获得瞬间滑动后回调onFling()这个抽象函数时,应该如何根据参数比较准确的判断滑动方向.如果你没有前面的基础知识,你可以去 ...

  4. oracle中prad函数_R中用GDCRNATools包下载TCGA数据

    用GDCRNATools下载TCGA数据,以TCGA-STAD为例下载RNAseq 1)数据下载,gdcRNADownload()函数 ###########用GDCRNATools下载TCGA数据# ...

  5. python中匹配函数_正则表达式以匹配函数名和Python中的所有参数

    假设我有一个字符串,如下所示:"func(arg1, arg2, arg3, arg4, ..., argn)" 编辑:此函数不是用某种特定语言编写的.它只有这种格式.如果这样做更 ...

  6. Python中的函数参数

    函数是最小的基本功能单元,能够增强代码的可读性,易于管理,而且Python作为支持函数式编程的语言,广泛的使用必不用说. 虽说Python函数的定义非常简单,但是却非常灵活,特别是函数参数的使用,使得 ...

  7. shell中的函数、shell中的数组、 告警系统需求分析

    为什么80%的码农都做不了架构师?>>>    20.16/20.17 shell中的函数 shell中的函数 说明:函数就是子shell, 是一个代码段,定义完函数就可以引用它. ...

  8. php中提取现在的时间函数,php中时间函数date及常用的时间计算

    曾在项目中需要使用到今天,昨天,本周,本月,本季度,今年,上周上月,上季度等等时间戳,趁最近时间比较充足,因此计划对php的相关时间知识点进行总结学习 1,阅读php手册date函数 常用时间函数: ...

  9. python数据参数_零基础学习python数据分析——函数的参数

    原标题:零基础学习python数据分析--函数的参数 上一节课中我们讲了python的函数定义,Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数 ...

最新文章

  1. 入围教育装备展“金奖产品”,升腾威讯云学区做真正教育桌面云
  2. Noip前的大抱佛脚----字符串
  3. java动态添加组件_有关Java Swing动态增加组件
  4. endnote x9中科大版_文献管理软件Endnote的一些使用经验
  5. 从头基于空镜像scratch创建一个新的Docker镜像
  6. 初读CLR Via C# 之 IL、CTS、CLS
  7. ueditor 上传html文件,UEditor Flash文件上传
  8. 理解Lucene中的Query
  9. 还在痴迷于大数据?未来 “小数据” 会让你大开眼界
  10. 使用freemarker模板生成html文件(一)
  11. 我的招聘网——用户登录模块设计与实现
  12. matplotlib画柱状图
  13. python计算复数的辐角_Python 自定义类中的函数和运算符重载
  14. 03从变量PS1到centos7配置文件到变量。转义字符介绍
  15. PATC语言1-50
  16. 证书详解及使用openssl生成自签证书与SAN多域名证书
  17. 计算机演示文稿教学实例课件,ppt课件制作基本要求及ppt教学案例
  18. AES.CBC 解密,python通用模板
  19. (第16-17讲)STM32F4单片机,FreeRTOS中断管理简介【视频笔记、代码讲解】【正点原子】【原创】
  20. 谷歌浏览器开发者工具 preserve log

热门文章

  1. java 规格overview_《Java數據結構和算法》- OverView
  2. 怎么在计算机里找到CF里保存的视频,电脑怎么查看穿越火线录制保存视频?操作方法...
  3. phpgif图片包_PHP生成GIF动态图片验证码
  4. 实用的编程网站—良好的开端
  5. codeforces B. Strongly Connected City(dfs水过)
  6. axure实现复选框全选_jq简单的全选、反选和全不选效果
  7. html input 上标,javascript – 文本类型的输入字段中的上标
  8. 多核cpu应用场景_CPU占用100%!PC卡顿原来可以这么解决:多场景多任务也流畅
  9. matlab系统稳定性分析,控制系统稳定性分析的MATLAB实现
  10. 行健设计_行健要闻|“第四届‘天行健创新创业设计大赛”培训班成功举办