Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法明确地忽略函数签名中声明的语法_Php_Arguments_Custom Function - Fatal编程技术网

Php 有没有办法明确地忽略函数签名中声明的语法

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,

有时,特别是在回调函数或继承/实现情况下,我不想在方法中使用一些参数。但是它们是方法接口签名所必需的(我不能更改签名,假设它是通过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);
}
或:

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()
with
list()
将有效地“清理”你的功能。看看我的更新。好的,谢谢。在接受你的答案之前,我只是等待其他答案,以防其他人知道不同的方法。@rap-2-h没关系,我建议你千万不要在堆栈溢出问题上匆忙使用绿色标记。@rap-2-h我刚刚想到
func\u get\u args()
with
list()
将有效地“清理”你的功能。看一看我的更新。是的,但这不符合OP的要求。并且无用的参数可以位于任何位置。还可以将第一个参数设置为可选(usefull等于null),然后检查函数中的所有参数,并执行任何您想执行的操作。这不是解决方案(尽管收到某人的向上投票)。为这些参数设置默认值不会使值为空。调用函数时,
null
值仅在没有参数的情况下分配。OP表示he不控制函数调用;只有函数声明。是的,但这与OP的要求无关。并且无用的参数可以位于任何位置。还可以将第一个参数设置为可选(usefull等于null),然后检查函数中的所有参数,并执行任何您想执行的操作。这不是解决方案(尽管收到某人的向上投票)。为这些参数设置默认值不会使值为空。调用函数时,
null
值仅在没有参数的情况下分配。OP表示he不控制函数调用;只有函数声明。