PHP 클래스 속성 선언에서 허용되는 표현식
PHP 문서에서는 클래스의 속성 선언이 런타임을 제외하고 상수 값으로 초기화될 수 있다고 제안합니다. 정보. 그러나 특정 배열 및 수학 표현식 초기화로 인해 구문 오류가 발생하는 것 같습니다.
간단한 표현식을 사용한 초기화
문서에 따르면 간단한 표현식을 허용해야 합니다. 여기에서는 배열과 수학 표현식의 세 가지 변형을 검토합니다.
승인됨:
<code class="php">public $var = array( 1 => 4, 2 => 5, );</code>
구문 오류:
<code class="php">public $var = array( 1 => 4, 2 => (4+1), );</code>
구문 오류:
<code class="php">public $var = 4+1;</code>
첫 번째 예는 숫자 값이 있는 배열이며 허용됩니다. 그러나 수학 표현식을 활용한 두 번째 및 세 번째 예에서는 둘 다 구문 오류가 발생합니다. 이는 모든 계산된 표현식을 포함하도록 제한이 배열 구문 이상으로 확장됨을 의미합니다.
PHP 5.6의 상수 스칼라 표현식
앞서 설명한 제한과 달리 PHP 5.6에서는 상수를 도입했습니다. 스칼라 표현식. 이 새로운 기능을 사용하면 상수 및 속성 선언과 같이 이전에 정적 값이 필요했던 상황에서 숫자 및 문자열 리터럴과 상수가 포함된 스칼라 표현식을 사용할 수 있습니다.
<code class="php">class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is '.self::THREE; public function f($a = ONE + self::THREE) { return $a; } } echo (new C)->f()."\n"; echo C::SENTENCE;</code>
이 코드는 다음을 출력합니다.
4 The value of THREE is 3
따라서 PHP 5.6 이상 버전에서는 클래스 속성 초기화에 대한 초기 제한이 더 이상 적용되지 않습니다.
위 내용은 PHP 클래스 속성 선언에서 수학 표현식으로 인해 구문 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!