【发布时间】:2014-03-12 14:42:12
【问题描述】:
我一直在尝试编写一个类,以使我的同学更容易将项目插入数据库。为此,我想在该类中创建一个函数,它将所有列和值作为键和值的数组。显然我可以做到以下几点:
class aClass {
public function aFunction( $args ) {
}
}
(new aClass)->aFunction( Array( 'column1' => 'value1', 'column2' => 'value2' ) );
这将创建一个带有 $args[column] = value 的数组 $args。而且我知道我不是第一个提出这个问题的人,但我希望它更该死。 我正在寻找一种至少比上面的例子更漂亮的替代方案。没过多久我就意识到'=>' 是除了 Array 之外的每个类的直接语法错误。于是,我又尝试了两件事,一件更糟,另一件因为我的推理失败而不起作用。
class aClass {
public function aFunction( ) {
$args = func_get_args();
}
}
(new aClass)->aFunction( 'value1', 'value2' );
上面的代码非常简洁,但是我不知道如何传递列名而不使它比第一个例子更长更愚蠢。
class aClass {
public function aFunction( ) {
$args = get_defined_vars();
}
}
(new aClass)->aFunction( $column1 = 'value1', $column2 = 'value2' );
除了它不起作用的事实之外,上面还可以。我认为它不起作用,因为 "$column1 = 'value1'" 只会在成功时返回 "'value'",这使得仅编写 "'value'" 成为一种冗长且资源效率低下的愚蠢方式。
有什么建议吗?我知道这有点愚蠢,而且这个问题之前可能已经被问过,但是只有 Array 类才能拥有这种语法似乎是不公平的。我实际上已经在谷歌上搜索了几个小时,亲爱的上帝,请帮助我的强迫症。
编辑: 即使只是让 php 解析器将 => 解释为逗号,这样我就可以使用模数运算符,任何事情都更好。
【问题讨论】:
-
您可以使用新的短数组表示法 (PHP >=5.4)。示例:
$a = [1, 2, 3, 4];或$a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; -
哦,这实际上还不错:我
标签: php arrays function class arguments