복붙노트

쓰기 컨텍스트에서 메서드 반환 값을 사용할 수 없습니다.

PHP

쓰기 컨텍스트에서 메서드 반환 값을 사용할 수 없습니다.

나는 다음 코드 조각이 효과가 있다고 생각 하겠지만, 그렇게하지는 않는다 (편집 됨 : PHP 5.5 이상에서 작동 함).

if (!empty($r->getError()))

getError ()는 간단히 다음과 같습니다.

public function getError()
{
    return $this->error;
}

그러나 나는이 오류로 끝난다.

이것은 무엇을 의미 하는가? 이건 그냥 읽지 않는거야?

해결법

  1. ==============================

    1.empty ()는 참조로 값에 접근 할 필요가있다. (참조가 그 참조를 가리키는 지 확인하기 위해) PHP 5.5 이전에는 함수에서 반환 된 임시 값에 대한 참조를 지원하지 않았다.

    empty ()는 참조로 값에 접근 할 필요가있다. (참조가 그 참조를 가리키는 지 확인하기 위해) PHP 5.5 이전에는 함수에서 반환 된 임시 값에 대한 참조를 지원하지 않았다.

    그러나 실제 문제는 "empty"값이 "false"와 다르다는 것을 실수로 믿는 empty ()를 사용한다는 것입니다.

    Empty는 별칭 일뿐입니다! isset ($ thing) || ! $ 물건. 검사중인 것이 항상 존재할 때 (함수 호출의 PHP 결과에서 항상 존재 함), empty () 함수는 부정 연산자 일뿐입니다.

    PHP에는 비어있는 개념이 없습니다. false로 평가되는 값은 비어 있고 true로 평가되는 값은 비어 있지 않습니다. 그건 같은거야. 이 코드 :

    $x = something();
    if (empty($x)) …
    

    이:

    $x = something();
    if (!$x) …
    

    ($ x는 empty ()가 중복되어 있기 때문에 항상 같은 결과를 모든 데이터 유형에 대해가집니다).

    메소드의 리턴 값은 항상 리턴 문이 없거나 리턴 값이 존재하고 널 (NULL)을 포함하는 경우에도 존재합니다. 따라서:

    if (!empty($r->getError()))
    

    논리적으로 다음과 같습니다.

    if ($r->getError())
    
  2. ==============================

    2.그것은 5.5 이하의 PHP 버전에서 empty ()의 한계입니다.

    그것은 5.5 이하의 PHP 버전에서 empty ()의 한계입니다.

    너는 이것으로 바꿔야 해.

    // Not recommended, just illustrates the issue
    $err = $r->getError();
    if (!empty($err))
    
  3. ==============================

    3.PHP 워드 프로세서에 따르면 :

    PHP 워드 프로세서에 따르면 :

    함수의 반환 값에 직접 empty ()를 사용할 수 없습니다. 대신 getError ()에서 반환되는 변수를 변수로 설정하고 변수에서 empty ()를 실행하십시오.

  4. ==============================

    4.보통이 문제를 해결하기 위해 is_empty ()라는 전역 함수를 만듭니다.

    보통이 문제를 해결하기 위해 is_empty ()라는 전역 함수를 만듭니다.

    function is_empty($var)
    { 
     return empty($var);
    }
    

    그럼 어디서나 일반적으로 빈 () 사용했을 그냥 is_empty () 사용

  5. ==============================

    5.다른 사람들에 의해 지적 되었 듯이, empty ()의 (이상한) 제한 사항입니다.

    다른 사람들에 의해 지적 되었 듯이, empty ()의 (이상한) 제한 사항입니다.

    대부분의 purproses 들어,이 일을 비우는 것과 동일하지만,이 작품 :

    if ($r->getError() != '')
    
  6. ==============================

    6.이 문제는 오류가 비어 있지 않은지 알고 싶습니다.

    이 문제는 오류가 비어 있지 않은지 알고 싶습니다.

    public function getError() {
        return $this->error;
    }
    

    isErrorSet () 메서드를 추가하면 문제가 해결됩니다.

    public function isErrorSet() {
        if (isset($this->error) && !empty($this->error)) {
            return true;
        } else {
            return false;
        }
    }
    

    이제이 코드는 아무런 통보없이 잘 작동합니다.

    if (!($x->isErrorSet())) {
        echo $x->getError();
    }
    
  7. ==============================

    7.배열이 비어 있는지 확인하는 다른 방법은 다음과 같습니다.

    배열이 비어 있는지 확인하는 다른 방법은 다음과 같습니다.

    count($array)>0
    

    그게 오류없이 나를 위해 작동합니다.

  8. from https://stackoverflow.com/questions/1075534/cant-use-method-return-value-in-write-context by cc-by-sa and MIT license