1

質問

PHPの公式ドキュメントで、次のような宣言をどこかで見つけました。

public int save ( string $filename [, int $options ] )

そしてこのように:

public mixed load ( string $filename [, int $options = 0 ] )

$options議論について、両者の違いは何ですか?

$options2番目のものは、引数が0に設定されていると確信しています(指定しない場合)。しかし、最初のもの?メソッドには2つの必須引数があると言っているのではありませんか? (では、角括弧は何のためですか?)。

私はこれをオーバーライドしようとしています:

public bool schemaValidate ( string $filename [, int $flags ] )

( schemaValidate() PHP ドキュメントから貼り付けられたフィンガープリント)

しかし、2 番目の引数を宣言すると$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...
}

2番目のものでは、彼らは次のようなことをしました:

public mixed load ( string $filename, int $options = 0 ){
    //do some stuff...
}
于 2015-03-19T15:38:20.150 に答える