문제를 (작동하지 않습니다 정의하는) 당신이 상수를 사용하고 있는지,하지만 당신은 식을 사용하는 것이 아니다.
클래스 멤버 변수를 "속성"이라고합니다. (...) public, protected 또는 private 키워드 중 하나를 사용하여 정의되고 일반 변수 선언이 뒤 따른다. 이 선언에는 초기화 (
)가 포함될 수 있지만이 초기화는 상수 값이어야합니다. 즉, 컴파일시 평가가 가능해야하며 평가를 위해 런타임 정보에 의존해서는 안됩니다.
이 간단한 선언, 예를 들어, 컴파일되지 않습니다 (구문 분석 오류) :
class MyClass{
private $myvar = 3+2;
}
그러나 우리는 오히려 것 그 상수 연결된 문자열보다 간단한 상수를 사용하는 클래스 선언을 변경하는 경우 예상대로 작동합니다. 작업 주위 생성자에 속성을 초기화 할 수 있기
class MyClass{
const myconst = 'somevalue';
public $myvar = array(0 => self::myconst);
}
$obj = new MyClass();
echo $obj->myvar[0];
:
알린, 나는이 당신을 도움이되기를 바랍니다
class MyClass{
const myconst = 'somevalue';
public $myvar;
public function __construct(){
$this->myvar = array(0 => 'do something with '.self::myconst);
}
}
$obj = new MyClass();
echo $obj->myvar[0];
C 매크로와 같은 것을 찾으려면 PHP가 그런 식으로 작동하지 않습니다. 게다가, "컴파일 시간"이 없습니다. PHP는 인터프리터입니다. – stillstanding
설명서를 작성한 사람들은 "컴파일 시간"이 있다는 인상을 받고있는 것 같습니다. http://www.php.net/manual/en/language.oop5.properties.php –
PHP 내부가 텍스트 코드를 바이트 코드로 변환하기 때문에 "컴파일 시간"(일종의)이 있습니다. http://sebastian-bergmann.de/archives/868-PHP-Compiler-Internals.html – Antoine