在PHP中使用常量作为默认函数值
这合法吗在PHP中使用常量作为默认函数值,php,function,constants,Php,Function,Constants,这合法吗 <?php function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) { //lots_of_awesome_code } ?> 其中,菜单\u默认值和ODP\u默认值是先前在文件中定义的常量。为什么不试试 不过,为了以防万一,您现在可以测试以下代码: define('MENU_DEFAULT_VALUE', 10); define('ODP_D
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
其中,菜单\u默认值
和ODP\u默认值
是先前在文件中定义的常量。为什么不试试
不过,为了以防万一,您现在可以测试以下代码:
define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
var_dump($foo);
var_dump($nub);
var_dump($odp);
}
ftw();
给出此输出:
string 'pwnage' (length=6)
int 10
string 'hello' (length=5)
所以我想说,是的,它是有效的:-)是的,这是合法的
发件人:
默认值必须是常量
表达式,而不是(例如)a
变量、类成员或函数
打电话
常量非常适合该清单。在OOP上下文中,还可以使用类成员常量作为默认方法参数值
class MyClass
{
const A = 1;
public function __construct($arg = self::A)
{
echo $arg;
}
}
是的,但是我在一个使用这个函数的函数中遇到了问题,我认为这在技术上是可能的,但与最佳实践相反。有没有任何原因/文档说明不能使用
静态
而仅仅通过self
引用常量,当设置类方法参数的默认值时?@Kamafeatherstatic
受到后期静态绑定的影响,使其不稳定。在类方法的上下文中,我发现不可能通过static
引用常量,而只能使用self
;这个myMethod($arg1=static::MY_CONST)
不起作用。你知道这种不同行为的任何有效解释吗?