2012-12-11 7 views
2

내가 해결책이 될 수 무엇 다음 코드치명적인 오류 : 줄에 <filename>에 쓰기 컨텍스트에서 메소드 반환 값을 사용할 수 없습니다 <문 ifconditioin>

 class Myclass { 
       //...variables 

       public function getName() { 
         return $this->strName; 
       } 

       public function checkDup() { 
         if(empty($this->getName())) { //HERE IS THE ERROR 
         $strMessage = 'Please Enter First Name'; 
         return $strMessage; 
         } 
       } 
    } 

    $a = new Myclass(); //assume constructor is present and variables are set in class 
    $a->checkDup(); 

의 오류? 내 getName() 함수는 변수

답변

2

나는 여기서 무엇이 잘못되었는지 알아 냈습니다.

나는 클래스 내부에 다시 ​​getName() 함수를 호출 $이를 사용하지 않는 클래스 멤버 변수를 참조해야한다. 그러면 함수가 다음과 같이 바뀝니다.

  public function checkDup() { 
        if(empty($this->strName)) { //HERE IS THE SOLUTION 
        $strMessage = 'Please Enter First Name'; 
        return $strMessage; 
        } 
      } 
+0

도움이 ... 좋은 잡기 –

1

변화의 이름 반환

if(empty($this->getName())) { 

에를
$name = $this->getName(); 
if(empty($name)) { 
... 

빈() 아무것도는 구문 분석 오류가 발생합니다 같은 변수 만 확인

+0

나는 정확히 같은 시도했다. 여전히 오류는 나타나기를 좋아합니다. –

0

empty 구조체 그렇게 조금 바보이다. the manual :

Note:

Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.

+0

입력 해 주셔서 감사합니다. 예, 제가 언급 한 것을 알고 있습니다. 하지만 여기에서는 클래스 변수의 값만 반환합니다. "대신 trim ($ name) == false를 사용하십시오." 이 컨텍스트를 사용할 때는주의하십시오. $ name의 값이 숫자 0 인 경우에는 사용할 수 없습니다. 요구 사항 일 수 있습니다. 대신 우리는 이것을 할 수 있습니다 : - $ name = trim ($ name); if (empty ($ name)) {// yourcode} –

+0

예, 당신은 * 무엇인가를 반환합니다. 너는 그럴 수 없어. empty ($ this-> getFoo())', $ foo = $ this-> getFoo(); 빈 ($ foo);'다시 않습니다. 설명서는 이것에 대해 꽤 분명합니다. –

0

여기에 대한 답변이 마음에 들지 않습니다. 예, $this->strName을 직접 참조 할 수 있습니다. 하지만 할 수 없다면? getName()에 몇 가지 중요한 기능이 있다면 어떨까요?

그런 다음 유일한 옵션은 다른 변수를 만드는 것입니다? $var = $this->getName();. 그것도 빤다. 내가 클래스의 속성이나 기능에 액세스 할 때마다

는 일반적으로 동적 그래서 중괄호 {}로 묶 :

  1. 나는 그것이 동적 알고 있습니다.
  2. 의미있는 오류가있는 경우 이에 대한 오류가 표시됩니다.

예 :

$this->{$variable}; 
$this->{$class->property}; 
$this->{$class->method()}; 
$this->{function()}; 
$this->{$array['index']};