在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()应该与DOMDocument :: schemaValidate($ filename)兼容
如果我删除了$flags
的声明,那么一切正常(就像我在< PHP 5.5.2 )
当我在 PHP 5.5.2 的$flags
构造函数中运行 PHP 5.5.9 和schemaValidate()
时,为什么我会得到不相容的问题?
如果PHP文档可信,或者我应该检查其他地方以获取正确的函数指纹,那么当我想覆盖原生方法时,我不会。
我试着查看源代码,但是the function is merely an alias to a C function。
答案 0 :(得分:3)
public int save ( string $filename [, int $options ] )
表示$options
可选,如果您未通过$options
,则其默认值为 null
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...
}