0
class BetterDOMDocument extends DOMDocument 
{
    function __construct($version = null, $encoding = null) {
        parent::__construct($version, $encoding);
    }
}

このコードは、バージョン属性が空の XML ヘッダーを生成します。

ただし、コンストラクターを次のように定義することはできません。

function __construct($version, $encoding) {}

引数を渡さずにこのコンストラクターを使用したい場合、PHPは未定義変数の使用について不平を言うからです。

DOMDocument渡す必要はありません$version。値を渡さない場合はデフォルトが使用されます。特定のデフォルト値を複製することなく、基本クラスの引数処理を変更せずにコンストラクターをオーバーライドするにはどうすればよいですか?

私がこれに興味を持っているのは、回避策が必要な問題という観点からではなく、PHP 言語設計の観点からです。PHP で DOMDocument の動作を再現できますか?それとも、内部コードが未定義の値を処理する方法について何か特別なことがありますか?

4

1 に答える 1

3

いくつかの賢明なデフォルトを設定するだけです。

class BetterDOMDocument extends DOMDocument 
{
    function __construct($version = '1.0', $encoding = 'UTF-8') {
        parent::__construct($version, $encoding);
    }
}

これが実際にコンストラクターで行っているすべてである場合、目的が独自のデフォルトに設定されていない限り、最初にオーバーロードする必要はありません。

NULLPHPでは、そして他の言語では、引数として渡す(たとえば)が代わりにデフォルト値を使用するようにクラスによって処理されない限り、実際には関数に「デフォルトを使用する」ように指示することはできません。既存のクラス/関数のtte設計を使用する必要がありますが、これは異なる場合があります。

于 2012-03-12T17:38:28.903 に答える