2013-02-12 7 views
1

왜 PHP에서 다음과 같은 작업을하지 못합니까?수식을 기본값으로 사용하는 방법은 무엇입니까?

const DAYS = 60*24*3;

다음과 같은 오류가 발생합니다.

Parse error: syntax error, unexpected T_CONST on line 1

또한 속성 배열의 값에 표현식을 할당 할 수도 없습니다. 참고, 나는 상수 값만을 ​​사용하고 있습니다 (함수 나 아무것도 호출하지 않음).

class A 
{ 
    public $value = array('days'=>60*24*3); 
} 

위의 코드는 작동하지 않습니다.

$value = array('days'=>60*24*3);

로컬 변수에 할당 된 경우 제대로 작동합니다.

값을 할당 할 때 어떻게 수학 표현식을 사용합니까?

+2

상수를 정의 했습니까? 정의 (상수, '값')? –

+0

오, 좋은 생각입니다. – cgTag

답변

1

상수는 define() 함수를 사용하여 정의됩니다. const은 클래스 내부의 예약어입니다 (PHP 5.3까지 클래스 범위 밖에서는 사용할 수 없습니다). 따라서 :

define('DAYS', 60*24*3); 

잘 작동합니다.

+1

참이지만, 이것이 전역 상수가됩니다. 그것은 단지'public $ property = 10 + 2-3;이라고 말하는 것과 같은 것이 아닙니다. – cgTag

0

상수를 정의해도 정상적으로 작동하지만 전역 범위가 변경됩니다. 이렇게 캡슐화 된 방법은 생성자에서 속성을 설정하는 것입니다.

<?php 

class Foo { 

    private $duration; 

    public function __construct() 
    { 
     $this->duration = 60 * 60 * 24 * 3; 
    } 
} 
관련 문제