我们大多数人都知道以下语法:
function funcName($param='value'){
echo $param;
}
funcName();
Result: "value"
Run Code Online (Sandbox Code Playgroud)
我们想知道如何为'not last'参数传递默认值?我知道这个术语很遥远,但一个简单的例子是:
function funcName($param1='value1',$param2='value2'){
echo $param1."\n";
echo $param2."\n";
}
Run Code Online (Sandbox Code Playgroud)
我们如何完成以下任务:
funcName(---default value of param1---,'non default');
Result:
value1
not default
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的,我们希望基本上假设不是最后的参数的默认值.
谢谢.
在PHP 4/5中是否可以在调用时指定一个命名的可选参数,跳过你不想指定的参数(比如在python中)?
就像是:
function foo($a,$b='', $c='') {
// whatever
}
foo("hello", $c="bar"); // we want $b as the default, but specify $c
Run Code Online (Sandbox Code Playgroud)
谢谢
让我们说我用这样的方法定义类:
class Test {
public function doStuff($a, $b, $c) {
// -- Do stuff --
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用此方法,但参数的顺序不同,如下所示:
$test = new Test();
$test->doStuff($b, $c, $a);
Run Code Online (Sandbox Code Playgroud)
它们的名称相同,但顺序不同.
我看到Symfony2可以使用其调度程序执行此操作,您可以按任何顺序使用参数.链接:Symfony2控制器可以做到这一点
问题是,如何使这项工作?Symfony2如何调用适当的动作控制器,然后可以按照您喜欢的任何顺序接受参数?
编辑:我不能使用数组,我知道php不使用命名参数.但不知何故,Symfony2设法做到了.
如何在 PHP 7+ 中实现命名参数功能?
理想的语法是:
find($wildcard, relative = true, listIfEmpty = false) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是没有这样的解决方案。在答案中,我实现了最短的解决方案,支持:
有关更多信息和实施,请参阅答案
我正在研究一个简单的课程,以便了解OOP,我需要一些函数的帮助.该函数接收各种参数,其中一些是可选的:
public function Test($req, $alsoreq, $notreq = null, $notreq2 = null, $notreq3 = null)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如何调用该函数,传递两个第一个参数和最后一个参数?
例如:
Test('req', 'alsoreq', 'notreq3');
Run Code Online (Sandbox Code Playgroud)
无视notreq2和notreq?
我试过了
Test('req', 'alsoreq', '', '', 'notreq3');
Run Code Online (Sandbox Code Playgroud)
但这看起来很丑陋和黑客.