ホームページ >バックエンド開発 >PHPチュートリアル >Call-Time Pass-by-Reference が PHP で非推奨になったのはなぜですか? 警告を修正するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。