>백엔드 개발 >PHP 튜토리얼 >PHP에서 Call-Time Pass-by-Reference가 더 이상 사용되지 않는 이유는 무엇이며 경고를 어떻게 해결할 수 있습니까?

PHP에서 Call-Time Pass-by-Reference가 더 이상 사용되지 않는 이유는 무엇이며 경고를 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-28 16:41:15302검색

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

PHP에서 Call-Time Pass-by-Reference 지원 중단

제공된 코드는 "Call-time pass-by-reference" 경고를 트리거합니다. 더 이상 사용되지 않습니다." 이 경고는 변수 참조 앞에 & 연산자로 표시되는 호출 시간 통과 참조 사용이 더 이상 PHP에서 지원되지 않음을 나타냅니다.

Call-Time Pass-by-Reference

이전 버전의 PHP에서는 호출 시 참조에 의한 전달을 통해 값에 의한 전달 함수를 사용할 때 참조에 의한 전달 동작을 시뮬레이션할 수 있었습니다. 여기에는 호출 시 변수 참조 앞에 &를 추가하는 작업이 포함됩니다. 예:

not_modified(&$x);

이를 통해 함수 내에서 $x가 참조하는 변수를 수정할 수 있습니다.

지원 중단

Call-time pass-by-reference는 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;
}

위 내용은 PHP에서 Call-Time Pass-by-Reference가 더 이상 사용되지 않는 이유는 무엇이며 경고를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.