>  기사  >  백엔드 개발  >  PHP 클래스 속성 선언에서 수학 표현식으로 인해 구문 오류가 발생하는 이유는 무엇입니까?

PHP 클래스 속성 선언에서 수학 표현식으로 인해 구문 오류가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-29 19:11:02527검색

Why Do Mathematical Expressions Cause Syntax Errors in PHP Class Property Declarations?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.