ホームページ >バックエンド開発 >PHPチュートリアル >Call-Time Pass-by-Reference が PHP で非推奨になったのはなぜですか? 警告を修正するにはどうすればよいですか?

Call-Time Pass-by-Reference が PHP で非推奨になったのはなぜですか? 警告を修正するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-28 16:41:15301ブラウズ

Why is Call-Time Pass-by-Reference Deprecated in PHP and How Can I Fix the Warning?

PHP での呼び出し時参照渡しの非推奨

提供されたコードにより、「呼び出し時参照渡し」という警告がトリガーされますは廃止されました。」この警告は、変数参照の前に & 演算子で示される呼び出し時参照渡しの使用が PHP でサポートされなくなったことを示します。

Call-Time Pass-by-Reference

古いバージョンの PHP では、呼び出し時の参照渡しにより、値渡し関数を使用するときに参照渡しの動作をシミュレートできました。これには、呼び出し時に変数参照の前に & を追加する必要がありました。例:

not_modified(&$x);

これにより、関数内で $x によって参照される変数を変更できるようになりました。

非推奨

呼び出し時の参照渡しは、PHP の以降のバージョンでは非推奨になっているため、使用しないでください。 使用済み。代わりに、変数は & を使用して明示的に参照渡しする必要があります。例:

modified($x);

オブジェクトと参照渡し

古いバージョンの PHP では、オブジェクトが必要です関数内で変更される場合は参照渡し。ただし、オブジェクトはデフォルトで常に参照によって渡されるため、最新の PHP バージョンではこれは必要ありません。したがって、提供されたコードでの &$this の使用は冗長です。

解決策

警告を解決するには、提供されたコードから & のすべてのインスタンスを削除します。以下は更新されたコードです:

function XML() {
    $this->parser = xml_parser_create();
    xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
    xml_set_object($this->parser, $this);
    xml_set_element_handler($this->parser, 'open', 'close');
    xml_set_character_data_handler($this->parser, 'data');
}
function destruct() {
    xml_parser_free($this->parser);
}
function parse($data) {
    $this->document = array();
    $this->stack    = array();
    $this->parent   = &$this->document;
    return xml_parse($this->parser, $data, true) ? $this->document : NULL;
}

以上がCall-Time Pass-by-Reference が PHP で非推奨になったのはなぜですか? 警告を修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。