2014-09-13 8 views
0

나는 validate_class 클래스를 가졌다.다른 메서드 내에서 메서드를 호출하는 방법은 무엇입니까?

  • A 생성자 내부.

  • 사용자 이름을 확인하는 몇 가지 다른 방법이 포함 된 check_username 함수입니다. 호출 될 때 check_username 메서드 안에있는 세 가지 메서드를 호출하려고합니다.

코드 :

function check_username(){ 
      //Checks if is username empty 
      function validate_empty_username(){ 
       if($this->empty_username){ 
        echo "<li>Please fill username field</li>"; 
        return false; 
       } 
      }  

      //Check username length is short 
      function validate_username_length_min(){ 
       if(($this->get_username_length < 3) and ($this->empty_username !== true)){ 
        echo "<li>Username provided's too short!</li>"; 
        return false; 
       } 
      } 

      //Check username length is long 
      function validate_username_length_max(){ 
       if($this->get_username_length > 15){ 
        echo "<li>Username's too long</li>"; 
        return false; 
       } 
      }   
     } 
+1

'check_username'을 클래스로 변경해야한다고 생각합니다. – JCOC611

+0

함수는 작은 작업을 수행하는 데 사용되므로 중첩되지 않습니다. 따라서 함수 정의를 위반하기 때문에 함수 내부에서 함수를 작성할 수 없습니다. – CMPS

답변

0

당신은 함수 내에서 함수를 호출하지만 그들을 정의되지 않습니다. 내부에 check_username()으로 전화해야하며 외부에서 정의 할 수 있습니다.

Class validate_class 
{ 
    function validate_username_length_min(){ 
     if(($this->get_username_length < 3) and ($this->empty_username !== true)){ 
      echo "<li>Username provided's too short!</li>"; 
      return false; 
     } 
    } 

    //Check username length is long 
    function validate_username_length_max(){ 
     if($this->get_username_length > 15){ 
      echo "<li>Username's too long</li>"; 
      return false; 
     } 
    } 
    function validate_empty_username(){ 
     if($this->empty_username){ 
       echo "<li>Please fill username field</li>"; 
       return false; 
      } 
    } 
    function check_username(){ 
     //Checks if is username empty 
     $this->validate_empty_username($this->empty_username);//calling function 
     //Check username length is short 
     $this->validate_username_length_min();//calling function 
     //Check username length is long 
     $this->validate_username_length_max();//calling function 
    } 
} 
1

하위 조건문을 기능 내에 포함시키지 않을 것입니다. 이 도움이

function check_username(){ 
      //Checks if is username empty 
       if($this->empty_username){ 
        echo "<li>Please fill username field</li>"; 
        return false; 
       } elseif(($this->get_username_length < 3) and ($this->empty_username !== true)){ 
        echo "<li>Username provided's too short!</li>"; 
        return false; 
       } elseif($this->get_username_length > 15){ 
        echo "<li>Username's too long</li>"; 
        return false; 
       } else { 
        return true; 
       } 
     } 

희망을 다음과 같이

단순히 있나요?

0

클래스의 숨겨진 메소드에 대해 개인 선언을 사용해야합니다. 모든 내부 기능을 개인적인 방법으로 만듭니다.

관련 문제