엄격한 표준: "변수만 참조로 전달해야 합니다" 경고 이해
PHP에서 엄격 모드는 특정 프로그래밍 방식을 시행하여 개선합니다. 코드 품질과 일관성. 그러한 관행 중 하나는 변수가 아닌 값을 참조로 전달하는 것을 피하는 것입니다. 이 질문은 이 경고의 원인을 탐색하고 이를 방지하기 위한 솔루션을 제공합니다.
문제: 참조 매개변수 및 반환 값
다음 코드 조각을 고려하세요.
$el = array_shift($instance->find(..))
이 코드는 "변수만 참조로 전달해야 합니다."라는 엄격한 표준 경고를 트리거합니다. 그러나 다음 코드는 그렇지 않습니다.
function get_arr(){ return array(1, 2); } $el = array_shift(get_arr());
이 동작을 이해하려면 PHP의 참조 처리를 자세히 살펴봐야 합니다. 참조가 함수에 전달되면 해당 매개변수가 참조하는 변수에 대한 모든 변경 사항이 원래 변수에 반영됩니다. 첫 번째 코드 조각에서 $instance->find(...)는 변수가 아닌 배열을 반환합니다. 이 배열을 참조로 전달하면 경고가 발생합니다.
예외 이해
그러나 이 예외는 오해의 소지가 있습니다. 두 번째 코드 조각에서 get_arr() 함수는 배열을 반환하는데, 이는 참조가 전달될 수 있음을 의미합니다. 그러나 함수 자체는 참조 매개변수를 사용하지 않으므로 경고를 방지합니다.
경고를 방지하는 해결 방법
경고를 제거하려면 두 가지 옵션이 있습니다. :
예:
function get_arr(){ return array(1, 2); } $inter = get_arr(); $el = array_shift($inter);
중간 변수 $inter를 사용하면 반환 값 전달을 방지할 수 있습니다. get_arr()을 직접 참조하여 엄격한 표준 경고를 해결합니다.
위 내용은 PHP의 엄격 모드에서 '변수만 참조로 전달되어야 합니다'라고 경고하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!