2009-12-06 11 views
1

방금 ​​PHP의 객체 지향 기능에 익숙해지기 시작했고, $this 변수에 대해 묻고 싶습니다.

$this->foo = 5; 
echo $this->foo; 

객체에의 foo 속성을 만들 것입니다 : 나는에 $this 키워드를 사용하고 클래스가 정의 된 속성 변수 foo이없는 경우 먼저, 그 다음 코드를 사용하는 것을 의미 하는가 자바 스크립트 에서처럼 런타임? 이 속성의 가시성은 무엇입니까?

+0

나는이 [page] (http://stackoverflow.com/questions/151969/php-self-vs-this)에 너무보기를 권한다. – Aif

답변

6

예, 그러면 foo 속성이 만들어지고 표시 여부는 public (기본값)입니다.

당신은 아주 쉽게 테스트 할 수 :

<?php 
class Foo { 
    public function setFoo($foo) { 
     $this->foo = $foo; 
    } 
} 

$f = new Foo(); 
$f->setFoo(5); 
echo $f->foo; 

가 오류없이 5를 인쇄합니다.

1

예. 물론 가능합니다.

0

등록 정보는 클래스와 관계없이 모든 객체에 추가 할 수 있습니다. 언급 할 가치가

$obj = new stdClass(); 
$obj->foo = 'bar'; 
3

__get__set 마법 기능입니다 작성하는 것도 가능합니다. 이 메서드는 정의되지 않은 속성이 호출 될 때마다 호출됩니다.

이렇게하면 멋지고 역동적 인 멋진 개체를 만들 수 있습니다. 알 수없는 속성이있는 웹 서비스와 함께 사용하기에 적합합니다.

+0

__construct ($ id)는 광산에서도 좋아하며 데이터베이스에서 정보를 가져 오는 경우 사용자와 같은 객체를 자동으로 설정할 수 있습니다. 이 경우 $ id는 클래스 선언을 통해 전달됩니다 (예 : $ obj = new myClass ($ id);). – Kaji