2014-11-02 5 views
0

* 업데이트 예PHP에 대한 자세한 내용

일부 기사와 php.net을 읽었습니다. 그러나 'this'예제에서 $ this를 이해하는 데 여전히 문제가 있습니다. 기본 용도가 무엇인지 이해합니다.

내가 마지막에이 기능을 가지고 있다고 가정 해 보겠습니다. return $ this; // 아무것도 $ this 뒤에 온다.

$ this (끝 부분에있는)는 무엇을 참조 할까? 은 어떻게 $이이

public function check($source, $items = array()){ 
    foreach ($items as $item => $rules) { 
     foreach($rules as $rule => $rule_value){ 

      $value = trim($source[$item]); 
      $item = escape($item); 

      if($rule === 'required' && empty($value)) { 
       $this->addError("{$item} is required"); 
      } else if(!empty($value)) { 
       switch($rule) { 
        case 'min': 
         if(strlen($value) < $rule_value) { 
          $this->addError("{$item} must be a minimum of {$rule_value} characters"); 
         } 
        break; 
        case 'max': 
         if(strlen($value) > $rule_value) { 
          $this->addError("{$item} must be a maximum of {$rule_value} characters"); 
         } 

        break; 

       } 
      } 



     } 
    } 

    if(empty($this->_errors)) { 
     $this->_passed= true; 
    } 

    return $this; 

} 

*이 코드는 레지스터 및 검증 클래스의 일부입니다 무엇 에코 - 보내고/확인할 수 있습니다. 그러나 요점은 여전히 ​​결국 $ this가 가리키는 것입니다. 감사합니다

+0

'var_dump ($ this); ' – RST

+5

$ 이것은 객체 자체를 참조합니다. 여기를 읽어보십시오. http://stackoverflow.com/questions/1523479/what-does-the-variable-this-mean-in-php – pbaldauf

+0

PHP 코드 패드를 작성하는 방법에 대해 (지금 삭제 된 질문에) 물었습니다. [여기에 하나 있습니다] (https://github.com/Viper-7/Deployable-PHP-Codepad). – halfer

답변

0

예에서 $this은 주 클래스 및 개체를 나타냅니다.

class MainClass 
    { 
     public function doSomething($x, $y) 
     { 
     $this->content = "Rssult is: " . $x+$y; 
     return $this; 
     } 

    public function printMe() 
    { 
     echo $this->content; 
    } 

}

그것은 개체와 클래스를 반환합니다.

이제 사용법은 무엇입니까? 기본적인 사용법 중 하나는 메소드 체인에 대한 것입니다. 글쎄, 무슨 뜻이야?

본 적이 있습니까?

$myClass = new MainClass(); 

$myClass->doSomething()->print(); 

위의 코드는 중지없이 반복적으로 호출되는 메서드 체인 (함수)이 있으므로 메서드 체인이라고하는 방법으로 구현됩니다.

기본적으로, 메소드 체인없이, 위의 코드를했을 : 각 방법은 새로운 MainClass을 (가지고있는 것처럼 전체 클래스)를 반환 이후

$myClass = new MainClass(); 
$s = $myClass->doSomething(5, 8); 
$myClass->print(); 

그러나 방법 체인과

은, 그것은 바로 전화를 할 수 있습니다 방법에.

"new"연산자가 클래스의 인스턴스를 생성하기 때문에 정확히 new MainClass()이 아니지만 $this은 현재 인스턴스가 반환됩니다.

$ this는 PHP가 클래스의 현재 설치되어있는 복사본 ($ this를 반환하기 전에 호출 된 메서드로 속성이 변경되었을 수 있음)을 반환하도록 알려줍니다.

+0

Thanks Mostafa! – Hilmanrdn

+0

도움 받기를 바랍니다. –

관련 문제