쓰기 컨텍스트에서 메서드 반환 값을 사용할 수 없습니다.
PHP쓰기 컨텍스트에서 메서드 반환 값을 사용할 수 없습니다.
나는 다음 코드 조각이 효과가 있다고 생각 하겠지만, 그렇게하지는 않는다 (편집 됨 : PHP 5.5 이상에서 작동 함).
if (!empty($r->getError()))
getError ()는 간단히 다음과 같습니다.
public function getError()
{
return $this->error;
}
그러나 나는이 오류로 끝난다.
이것은 무엇을 의미 하는가? 이건 그냥 읽지 않는거야?
해결법
-
==============================
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.그것은 5.5 이하의 PHP 버전에서 empty ()의 한계입니다.
그것은 5.5 이하의 PHP 버전에서 empty ()의 한계입니다.
너는 이것으로 바꿔야 해.
// Not recommended, just illustrates the issue $err = $r->getError(); if (!empty($err))
-
==============================
3.PHP 워드 프로세서에 따르면 :
PHP 워드 프로세서에 따르면 :
함수의 반환 값에 직접 empty ()를 사용할 수 없습니다. 대신 getError ()에서 반환되는 변수를 변수로 설정하고 변수에서 empty ()를 실행하십시오.
-
==============================
4.보통이 문제를 해결하기 위해 is_empty ()라는 전역 함수를 만듭니다.
보통이 문제를 해결하기 위해 is_empty ()라는 전역 함수를 만듭니다.
function is_empty($var) { return empty($var); }
그럼 어디서나 일반적으로 빈 () 사용했을 그냥 is_empty () 사용
-
==============================
5.다른 사람들에 의해 지적 되었 듯이, empty ()의 (이상한) 제한 사항입니다.
다른 사람들에 의해 지적 되었 듯이, empty ()의 (이상한) 제한 사항입니다.
대부분의 purproses 들어,이 일을 비우는 것과 동일하지만,이 작품 :
if ($r->getError() != '')
-
==============================
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.배열이 비어 있는지 확인하는 다른 방법은 다음과 같습니다.
배열이 비어 있는지 확인하는 다른 방법은 다음과 같습니다.
count($array)>0
그게 오류없이 나를 위해 작동합니다.
from https://stackoverflow.com/questions/1075534/cant-use-method-return-value-in-write-context by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP는 방법 체인? (0) | 2018.09.05 |
---|---|
PHP에서 @ 기호의 사용법은 무엇입니까? (0) | 2018.09.05 |
웹 MVC 애플리케이션에 액세스 제어 목록을 구현하려면 어떻게해야합니까? (0) | 2018.09.05 |
file_get_contents를 사용하여 PHP로 데이터를 게시하는 방법은 무엇입니까? (0) | 2018.09.05 |
.htaccess를 사용하여 모든 .html 페이지를 .php 파일로 실행하도록 하시겠습니까? (0) | 2018.09.05 |