相关疑难解决方法(0)

PHP默认函数参数值,如何为'not last'参数"传递默认值"?

我们大多数人都知道以下语法:

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 parameters default function

46
推荐指数
3
解决办法
3万
查看次数

命名PHP可选参数?

在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)

谢谢

php default-value

21
推荐指数
3
解决办法
9224
查看次数

如何以任何顺序使用PHP函数或方法参数?

让我们说我用这样的方法定义类:

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 symfony method-parameters

6
推荐指数
1
解决办法
1913
查看次数

PHP 7+ 中的命名参数解决方案

如何在 PHP 7+ 中实现命名参数功能?

理想的语法是:

find($wildcard, relative = true, listIfEmpty = false) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是没有这样的解决方案。在答案中,我实现了最短的解决方案,支持:

  • 重构
  • 参数和函数结果的类型提示
  • 可重用参数集
  • 类型安全参数
  • 参数的默认值
  • 每个参数的 Getter(无硬编码字符串)
  • 非常简单的 setter/getter,您只需为每个参数更改一个名称

有关更多信息和实施,请参阅答案

php parameter-passing named-parameters php-7

5
推荐指数
1
解决办法
1843
查看次数

将多个参数传递给PHP中的方法

我正在研究一个简单的课程,以便了解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)

无视notreq2notreq

我试过了

Test('req', 'alsoreq', '', '', 'notreq3');
Run Code Online (Sandbox Code Playgroud)

但这看起来很丑陋和黑客.

php oop parameters function

2
推荐指数
1
解决办法
7573
查看次数