"function($arg = 0)" 和 "function($arg)" 之间的区别
Difference between "function($arg = 0)" and "function($arg)"
问题
在 PHP 官方文档中,我发现某处有这样的声明:
public int save ( string $filename [, int $options ] )
像这样:
public mixed load ( string $filename [, int $options = 0 ] )
关于 $options
论点,两者有什么区别?
第二个我确定 $options
参数设置为 0(当我没有指定它时)。
但是第一个?不是说该方法有 2 个强制参数吗? (所以方括号是什么?)。
例子
我正在尝试覆盖它:
public bool schemaValidate ( string $filename [, int $flags ] )
(从schemaValidate() PHP documentation粘贴的指纹)
但是如果我声明第二个参数 $flags
,那么我会得到一个
SchemaValidate() should be compatible with DOMDocument::schemaValidate($filename)
如果我删除 $flags
的声明一切正常(就像我在 < PHP 5.5.2)
而我 运行 PHP 5.5.9 和 $flags
已在 [=50 的 schemaValidate()
构造函数中引入=]PHP 5.5.2,为什么会出现不兼容的问题?
如果 PHP 文档是可信的,或者我是否应该在其他地方检查 正确的函数指纹,当我想覆盖本机方法时,我没有得到 .
我试图查看源代码,但是 the function is merely an alias to a C function。
public int save ( string $filename [, int $options ] )
表示$options
是可选的,如果不传$options
,它的默认值为null[=30] =]
public mixed load ( string $filename [, int $options = 0 ] )
表示$options
是可选的,如果不传$options
,它的默认值为0
要实现第一个文档,肯定是自己做了一个函数,自己重写了,如下:
public int save ( string $filename ){
//do some stuff...
}
//later in code...
public int save ( string $filename, int $options ){
//do some stuff...
}
而在第二个中,他们只是做了类似的事情:
public mixed load ( string $filename, int $options = 0 ){
//do some stuff...
}
问题
在 PHP 官方文档中,我发现某处有这样的声明:
public int save ( string $filename [, int $options ] )
像这样:
public mixed load ( string $filename [, int $options = 0 ] )
关于 $options
论点,两者有什么区别?
第二个我确定 $options
参数设置为 0(当我没有指定它时)。
但是第一个?不是说该方法有 2 个强制参数吗? (所以方括号是什么?)。
例子
我正在尝试覆盖它:
public bool schemaValidate ( string $filename [, int $flags ] )
(从schemaValidate() PHP documentation粘贴的指纹)
但是如果我声明第二个参数 $flags
,那么我会得到一个
SchemaValidate() should be compatible with DOMDocument::schemaValidate($filename)
如果我删除 $flags
的声明一切正常(就像我在 < PHP 5.5.2)
而我 运行 PHP 5.5.9 和 $flags
已在 [=50 的 schemaValidate()
构造函数中引入=]PHP 5.5.2,为什么会出现不兼容的问题?
如果 PHP 文档是可信的,或者我是否应该在其他地方检查 正确的函数指纹,当我想覆盖本机方法时,我没有得到 .
我试图查看源代码,但是 the function is merely an alias to a C function。
public int save ( string $filename [, int $options ] )
表示$options
是可选的,如果不传$options
,它的默认值为null[=30] =]
public mixed load ( string $filename [, int $options = 0 ] )
表示$options
是可选的,如果不传$options
,它的默认值为0
要实现第一个文档,肯定是自己做了一个函数,自己重写了,如下:
public int save ( string $filename ){
//do some stuff...
}
//later in code...
public int save ( string $filename, int $options ){
//do some stuff...
}
而在第二个中,他们只是做了类似的事情:
public mixed load ( string $filename, int $options = 0 ){
//do some stuff...
}