Php 有没有办法明确地忽略函数签名中声明的语法
有时,特别是在回调函数或继承/实现情况下,我不想在方法中使用一些参数。但是它们是方法接口签名所必需的(我不能更改签名,假设它是通过Composer所必需的)。例如:Php 有没有办法明确地忽略函数签名中声明的语法,php,arguments,custom-function,Php,Arguments,Custom Function,有时,特别是在回调函数或继承/实现情况下,我不想在方法中使用一些参数。但是它们是方法接口签名所必需的(我不能更改签名,假设它是通过Composer所必需的)。例如: // Assuming the class implements an interface with this method: // public function doSomething($usefull1, $usefull2, $usefull3); public function doSomething($usefull,
// 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);
}
或:
PHP希望对参数进行解释并唯一命名
编辑:如果您想避免声明不使用的变量(但您知道它们正在被发送),请尝试和。这应该使代码精简、干净、可读。()
我认为你最好能给他们起一个独特的名字,这表明他们不会在电话中使用 也许:
function doSomething($usefull,$x1,$x2){
return something_with($usefull);
}
或:
PHP希望对参数进行解释并唯一命名
编辑:如果您想避免声明不使用的变量(但您知道它们正在被发送),请尝试和。这应该使代码精简、干净、可读。()
为可选参数指定默认值
function doSomething($usefull,$useless1=null,$useless2=null){
return something_with($usefull);
}
现在。。。。
参数1是必需的
参数2是可选的
参数3是可选的
调用函数,如
doSomething($data);
doSomething($data,$anotherData);
doSomething($data,$anotherData,$anotherData1);
为可选参数指定默认值
function doSomething($usefull,$useless1=null,$useless2=null){
return something_with($usefull);
}
现在。。。。
参数1是必需的
参数2是可选的
参数3是可选的
调用函数,如
doSomething($data);
doSomething($data,$anotherData);
doSomething($data,$anotherData,$anotherData1);
您的具体对象并不完全适合接口,因此您可以在它们之间添加一个适配器类。所以界面保持原样,你的对象就得到了它真正需要的东西
class Adapter extends CustomInterface
{
function doSomething($ignore1,$useful,$ignore2){
return $customClass->something_with($useful);
}
}
您的具体对象并不完全适合接口,因此您可以在它们之间添加一个适配器类。所以界面保持原样,你的对象就得到了它真正需要的东西
class Adapter extends CustomInterface
{
function doSomething($ignore1,$useful,$ignore2){
return $customClass->something_with($useful);
}
}
好的,谢谢。在接受你的答案之前,我只是等待其他答案,以防其他人知道不同的方法。@rap-2-h没关系,我建议你千万不要在堆栈溢出问题上匆忙使用绿色标记。@rap-2-h我刚刚想到
func\u get\u args()
withlist()
将有效地“清理”你的功能。看看我的更新。好的,谢谢。在接受你的答案之前,我只是等待其他答案,以防其他人知道不同的方法。@rap-2-h没关系,我建议你千万不要在堆栈溢出问题上匆忙使用绿色标记。@rap-2-h我刚刚想到func\u get\u args()
withlist()
将有效地“清理”你的功能。看一看我的更新。是的,但这不符合OP的要求。并且无用的参数可以位于任何位置。还可以将第一个参数设置为可选(usefull等于null),然后检查函数中的所有参数,并执行任何您想执行的操作。这不是解决方案(尽管收到某人的向上投票)。为这些参数设置默认值不会使值为空。调用函数时,null
值仅在没有参数的情况下分配。OP表示he不控制函数调用;只有函数声明。是的,但这与OP的要求无关。并且无用的参数可以位于任何位置。还可以将第一个参数设置为可选(usefull等于null),然后检查函数中的所有参数,并执行任何您想执行的操作。这不是解决方案(尽管收到某人的向上投票)。为这些参数设置默认值不会使值为空。调用函数时,null
值仅在没有参数的情况下分配。OP表示he不控制函数调用;只有函数声明。