update : 2015.11.03
php.shukuma.com

검색:
 
 
프로퍼티

프로퍼티

클래스 멤버 변수들을 "프로퍼티(properties)" 라고 부릅니다. "애튜리뷰트(attributes)" 나 "필드(fields)" 라는 이름으로 불렀을지 모르지만, 이 문서에서는 "프로퍼티"를 사용하도록 하겠습니다. 프로퍼티는 public, protected, 또는 private 키워드를 붙일수 있으며, 이어 일반적인 변수선언이 뒤따릅니다. 선언시에 변수를 초기화 할수 있지만 반드시 상수여야 합니다.-- 이것은, 컴파일 타임에 평가 가능한 값이어야 함을 의미합니다.

public, protected, 와 private 의 의미에 대한 정보는 가시성 를 참고 하시기 바랍니다..

Note:

PHP 4 와의 하위 호환성을 유지하기 위해, PHP 5 는 아직도 프로퍼티를 선언할때 public, protected, 또는 private 키워드를 사용하는 방법과 함께 var 키워드를 사용하는것을 허용하고 있습니다. 그렇긴 하지만, var 키워드는 더이상 필수가 아니므로 사용에 제한을 둘것을 권장합니다. PHP 5.0 에서 5.1.3 까지는 var 키워드는 비추천 으로 간주되어 E_STRICT 경고를 발생했습니다. 하지만, PHP 5.1.3 이후로는 더이상 비추천이 아니며, 경고도 발생하지 않습니다.

public, protected, 또는 private 중의 하나 대신에 var 키워드로 프로퍼티를 선언했다면, PHP 5 는 public 으로 선언한것으로 다루게 됩니다.

클래스 메서드 내에서 비정적 프로퍼티는 -> (객체 연산자) 를 사용하여 접근 가능합니다: $this->property (여기서 property 는 프로퍼티명을 의미함). 정적 프로퍼티들은 :: (Double Colon) 을 사용하여 접근 가능합니다:self::$property. 정적, 비정적 프로퍼티의 차이점을 알고 싶을 경우 스태틱 키워드 를 참고 하시기 바랍니다.

의사-변수 $this 는 객체 내부에서 메서드가 호출되었을때 어떤 클래스의 내부에서든지 존재하는 값입니다. $this 는 현재 호출한 객체를 참조합니다.(보통은 메서드가 속한 객체를 참조하지만, 만약에 메서드가 다른객체로부터 정적으로 호출되었다면 다른 객체를 참조하는것도 가능합니다.)

Example #1 프로퍼티 선언

<?php
class SimpleClass
{
   
// 잘못된 프로퍼티 선언:
   
public $var1 'hello ' 'world';
   public 
$var2 = <<<EOD
hello world
EOD;
   public 
$var3 1+2;
   public 
$var4 self::myStaticMethod();
   public 
$var5 $myVar;

   
// 유효한 프로퍼티 선언:
   
public $var6 myConstant;
   public 
$var7 = array(truefalse);

   
// PHP 5.3.0 이후부터 가능합니다.
   
public $var8 = <<<'EOD'
hello world
EOD;
}
?>

Note:

클래스와 객체를 다루는 몇가지 좋은 함수들이 존재 합니다. 원한다면 참고 하시기 바랍니다. 클래스/객체 함수들.

heredocs 과는 다르게, nowdocs 은 어떤 정적 데이터 컨텍스트이든지 사용할 수 있으며, 프로퍼티도 그중하나 입니다.

Example #2 nowdoc을 이용한 프로퍼티 초기화 예제

<?php
class foo {
   
// As of PHP 5.3.0
   
public $bar = <<<'EOT'
bar
EOT;
}
?>

Note:

PHP 5.3.0 이후부터 nowdoc지원이 추가 되었습니다.