2014-11-12 3 views
1

3 진 연산자를 사용하여 두 개의 다른 값을 클래스 변수에 할당하려고합니다.클래스의 3 진 연산자 구문 오류

다음 코드 샘플은 치명적인 오류가 발생합니다.

class test { 
     public $data = (true) ? "working" : "not working"; //Parse error: syntax error, unexpected '(' in C:\xampp\htdocs\Faltu\test.php on line 15 

     function __construct() { 
      echo $this->data; 
     } 
    } 
    $test = new test(); 

클래스없이 시도했지만 잘 작동하지만 클래스에서 오류가 발생합니다.

아무에게도 어떻게 달성 할 수 있습니까? 사전

+1

이 작동 ( – Ghost

+0

속성을 선언하고, 선택적으로 _constant_ 값을 사용하여 초기화 할 필요가 생성자 내부에서 수행해야 즉, 컴파일시 알려진 값). Google에서 10 초, 또는 실제로 클래스 정의의 삼원 문자에 대한 이전 질문을 보면 –

+0

[php에서 상수 vs 속성의 가능한 중복?] (http://stackoverflow.com/questions/3590178/constant- vs-properties-in-php) 생성자가없는 –

답변

3

속성을 선언 할 때 당신은 상수 값을 할당 할 수있는

덕분에, 당신은 원처럼, 논리 연산을 수행 할 수 없습니다. documentation에서

class test { 
    public $data = NULL; 

    function __construct() { 
     $this -> data = true ? "working" : "not working"; 
     echo $this -> data; // working 
    } 
} 
$test = new test(); 

을 :

당신은 당신의 __construct 기능의 로직을 수행 할 수 있습니다

이 선언은 초기화를 포함 할 수 있지만,이 초기화는 상수 값이어야합니다 - 즉 컴파일 타임에 평가 될 수 있어야하고 평가할 때 런타임 정보에 의존해서는 안됩니다.

+0

이 가능합니까? – Kalpit

+2

@Kalpit 아니, 그렇지 않아. 논리는 런타임에 발생합니다 (스크립트가 실행 중일 때). 컴파일 타임 (스크립트를 읽고 파싱 할 때)에는 상수 값 (문자열, 숫자, 배열 등) 만 설정할 수 있습니다. –

+1

@Kalpit은 생성자 내부에서만 가능하지 않습니다. 그 한계 중 하나 – Ghost

0

은 당신이 속성의 선언이있을 수 없습니다 살펴

class test { 
    public $data = NULL; 

    function __construct() { 
     echo $this -> data = true ? "working" : "not working"; //working 

    } 
} 
$test = new test(); 
+0

3 변수 연산자를 멤버 변수 정의에서 생성자로 이동했기 때문에이 방법이 효과가 있음을 지적하는 것이 중요하다고 생각합니다. 그 이유를 설명하는 데 약간의 도움이됩니다. –