在PHP 4/5中是否可以在调用时指定一个命名的可选参数,从而跳过您不想指定的参数(例如在python中)?
就像是:
function foo($a,$b='', $c='') {
// whatever
}
foo("hello", $c="bar"); // we want $b as the default, but specify $c
谢谢
不,这是不可能的:如果要传递第三个参数,则必须传递第二个参数。并且命名参数也不可能。
一种“解决方案”是只使用一个参数,一个数组并始终传递它……但不要总是在其中定义所有内容。
例如 :
function foo($params) {
var_dump($params);
}
并这样称呼:
foo(array(
'a' => 'hello',
));
foo(array(
'a' => 'hello',
'c' => 'glop',
));
foo(array(
'a' => 'hello',
'test' => 'another one',
));
将获得以下输出:
array
'a' => string 'hello' (length=5)
array
'a' => string 'hello' (length=5)
'c' => string 'glop' (length=4)
array
'a' => string 'hello' (length=5)
'test' => string 'another one' (length=11)
但是我真的不喜欢这个解决方案:
所以我只在非常特殊的情况下才这样做-例如,对于具有很多选项参数的函数…
4.2. 使用可选参数和命名参数 Python 允许函数参数有缺省值;如果调用函数时不使用参数,参数将获得它的缺省值。此外,通过使用命名参数还可以以任意顺序指定参数。SQL Server Transact/SQL 中的存储过程也可以做到这些;如果你是脚本高手,你可以略过这部分。 info 函数就是这样一个例子,它有两个可选参数。 def info(object, spacing=10, coll
问题内容: 使用Hibernate时,有什么方法可以在命名查询中指定可选参数(例如,从表单提供搜索参数而并非所有参数都是必需的)?我正在使用本机SQL查询,但该问题可能也适用于命名HQL查询。 我很确定对此的答案是“否”,但是我还没有在文档中找到确切的答案。 问题答案: AFAIK,没有这样的事情,因此您必须为此编写一个动态查询。也许看一下以前的答案,该答案显示了如何在HQL中执行此操作(您可以将
问题内容: 我正在尝试将冗长的空心“数据”类转换为命名元组。我的班级目前看起来像这样: 转换为它后看起来像: 但是这里有一个问题。我的原始类允许我只传入一个值,并通过对named / keyword参数使用默认值来处理默认值。就像是: 但这在重构的元组中不起作用,因为它希望我传递所有字段。我当然可以替换to的出现,但这并不是我喜欢的。 那么,是否存在一个可以使我的重写成功而又不增加很多代码复杂性(
我正在尝试将一个较长的空心“数据”类转换为命名元组。我的类目前看起来像这样: 转换为它看起来像这样: 但是这里有一个问题。我最初的类允许我只传入一个值,并通过为命名/关键字参数使用默认值来处理默认值。类似于: 但这在我重构的命名元组中不起作用,因为它要求我传递所有字段。我当然可以将出现的替换为,但这不符合我的喜好。 那么,是否有一个很好的技巧可以让我的重写成功而不会增加很多代码复杂性(元编程),或
问题内容: 最初使我不愿在代码中加入太多可选绑定的一件事是添加了更多的变量名。例如,我通常会写: 因为替代方案似乎有些混乱: 那是很多香蕉。我见过人们使用诸如新变量名之类的东西(在较大的代码块中可能很难看懂),但是我想知道是否存在一种普遍认可的变量名样式标准可以与可选绑定?谢谢阅读。 问题答案: 只需使用相同的名称: 不要使用匈牙利符号-如果您使用的是未包装的可选内容,则编译器会抱怨。