1

问题

在 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 文档中粘贴的指纹)

但是如果我声明第二个参数$flags,那么我会得到一个

SchemaValidate() 应该与 DOMDocument::schemaValidate($filename) 兼容

如果我删除$flags一切正常的声明(就像我在< PHP 5.5.2中一样)

当我运行PHP 5.5.9并从PHP 5.5.2$flags引入schemaValidate()构造函数时,为什么会出现不兼容的问题?

当我想覆盖本机方法时,我不知道PHP 文档是否可信,或者我是否应该在其他地方检查正确的函数指纹。

我试图查看源代码,但该函数只是C函数的别名。

4

1 回答 1

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...
}
于 2015-03-19T15:38:20.150 回答