PHP 调用这些默认参数,它们是一种为调用时未传递给函数的变量提供值的方法。所以给定你的函数(为了演示的目的,我把它变成了一个函数而不是一个方法):
function get_news($slug = FALSE) {
var_dump($slug);
}
echo "With no arguments: ";
get_news();
echo "With a slug (abc): ";
get_news('abc');
(键盘演示)
当没有值$slug传递给get_news()时,它假定函数签名中的默认值,false。$slug但是,如果在调用时提供了一个值get_news(),那么在函数中,$slug将是这个值('abc'在示例中)。
这在指定不经常需要的参数时特别有用。但请仔细阅读文档,因为只能将某些值指定为默认值。它们是:标量(布尔值、字符串、整数和浮点数)、arrays 和 NULL。您不能将参数默认定义为非标量,例如对象、对象方法或对象属性、函数调用或常量(基本上是任何非标量或表达式)。
有效的:
function test($a = false) {}
function test($a = 'default') {}
function test($a = 1) {}
function test($a = array()) {}
function test($a = SOME_CONST) {}
function test($a = SomeClass::someConstant) {}
(键盘演示)
那些不起作用的:
function test($a = someFunc()) {}
function test($a = new stdClass()) {}
function test($a = SomeClass::staticMethod()) {}
function test($a = 1 + 1) {} // this includes all expressions (and string concatenation)
对于那些不这样做的人,一个常见的范例是使参数默认为NULL,然后在函数中为变量分配一个默认值,如果它的值为NULL. 例子:
function getDefault() {
return 'some dynamic default';
}
function test($a = NULL) {
if($a === NULL) {
$a = getDefault();
}
var_dump($a);
}
test(); // string(20) "some dynamic default"
test('a'); // string(1) "a"
(键盘演示)