有没有办法显式忽略函数签名中声明的参数
Is there a way to explicitely ignore agruments declared in function signature
有时,尤其是回调函数或 inheritance/implementation 情况下,我不想在方法中使用某些参数。但是它们是方法接口签名所必需的(我无法更改签名,假设这是通过 Composer 需要的东西)。示例:
// Assuming the class implements an interface with this method:
// public function doSomething($usefull1, $usefull2, $usefull3);
public function doSomething($usefull, $useless_here, $useless_here) {
return something_with($usefull);
}
// ...
在其他一些语言中(比方说 Rust),我可以显式地忽略这些参数,这使代码(和意图)更具可读性。在 PHP 中,可能是这样的:
public function doSomething($usefull, $_, $_) {
return something_with($usefull);
}
这在 PHP 中可行吗?我错过了什么吗?
旁注:它不仅用于尾随参数,它可以在函数声明中的任何位置
我认为最好的办法就是给它们起唯一的名字,表明它们不会在通话中使用。
也许:
function doSomething($usefull,$x1,$x2){
return something_with($usefull);
}
或者:
function doSomething($ignore1,$useful,$ignore2){
return something_with($useful);
}
PHP 想要解释并唯一命名参数。
编辑:如果您想避免声明您不会使用的变量(但您知道它们正在发送),请尝试 func_get_args() and list(). This should make the code lean, clean, readable. (Demo)
function test(){
// get only use argument 2
list(,$useful,)=func_get_args();
echo $useful;
}
test('one','two','three'); // outputs: two
为可选参数分配默认值。
function doSomething($usefull,$useless1=null,$useless2=null){
return something_with($usefull);
}
现在....
参数 1 是必需的
参数 2 是可选的
参数 3 是可选的
调用函数如..
doSomething($data);
doSomething($data,$anotherData);
doSomething($data,$anotherData,$anotherData1);
您的具体对象与界面不完全匹配,因此您可以在它们之间添加一个适配器 class。所以界面保持原样,您的对象只是得到它真正需要的东西。
class Adapter extends CustomInterface
{
function doSomething($ignore1,$useful,$ignore2){
return $customClass->something_with($useful);
}
}
有时,尤其是回调函数或 inheritance/implementation 情况下,我不想在方法中使用某些参数。但是它们是方法接口签名所必需的(我无法更改签名,假设这是通过 Composer 需要的东西)。示例:
// Assuming the class implements an interface with this method:
// public function doSomething($usefull1, $usefull2, $usefull3);
public function doSomething($usefull, $useless_here, $useless_here) {
return something_with($usefull);
}
// ...
在其他一些语言中(比方说 Rust),我可以显式地忽略这些参数,这使代码(和意图)更具可读性。在 PHP 中,可能是这样的:
public function doSomething($usefull, $_, $_) {
return something_with($usefull);
}
这在 PHP 中可行吗?我错过了什么吗?
旁注:它不仅用于尾随参数,它可以在函数声明中的任何位置
我认为最好的办法就是给它们起唯一的名字,表明它们不会在通话中使用。
也许:
function doSomething($usefull,$x1,$x2){
return something_with($usefull);
}
或者:
function doSomething($ignore1,$useful,$ignore2){
return something_with($useful);
}
PHP 想要解释并唯一命名参数。
编辑:如果您想避免声明您不会使用的变量(但您知道它们正在发送),请尝试 func_get_args() and list(). This should make the code lean, clean, readable. (Demo)
function test(){
// get only use argument 2
list(,$useful,)=func_get_args();
echo $useful;
}
test('one','two','three'); // outputs: two
为可选参数分配默认值。
function doSomething($usefull,$useless1=null,$useless2=null){
return something_with($usefull);
}
现在.... 参数 1 是必需的 参数 2 是可选的 参数 3 是可选的
调用函数如..
doSomething($data);
doSomething($data,$anotherData);
doSomething($data,$anotherData,$anotherData1);
您的具体对象与界面不完全匹配,因此您可以在它们之间添加一个适配器 class。所以界面保持原样,您的对象只是得到它真正需要的东西。
class Adapter extends CustomInterface
{
function doSomething($ignore1,$useful,$ignore2){
return $customClass->something_with($useful);
}
}