> 백엔드 개발 > PHP 튜토리얼 > 정적 속성을 정의할 때 PHP에서 '상수 표현식에 잘못된 연산이 포함되어 있습니다' 오류가 발생하는 이유는 무엇입니까?

정적 속성을 정의할 때 PHP에서 '상수 표현식에 잘못된 연산이 포함되어 있습니다' 오류가 발생하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-01 02:12:13
원래의
840명이 탐색했습니다.

Why Does PHP Throw a

PHP 오류: 상수 표현식에 잘못된 연산이 포함되어 있습니다

PHP 개발에서 흔히 발생하는 문제는 "치명적인 오류: 상수 표현식에 잘못된 연산이 포함되어 있습니다"입니다. " 오류는 상수 표현식 내에서 유효하지 않은 연산을 사용하려고 시도할 때 발생합니다. 이는 일반적으로 클래스 속성이나 함수 매개변수를 상수로 정의할 때 발생합니다.

문제

구체적으로 제공된 예에서는 구성의 214행에서 오류가 발생합니다. php 파일:

protected static $dbname = 'mydb_'.$appdata['id'];
로그인 후 복사

이 줄은 $dbname이라는 정적 속성을 정의하고 이를 다음과 같이 초기화하려고 시도합니다. 문자열 'mydb_'와 $appdata['id'] 변수 값의 연결입니다. 그러나 $appdata['id']는 상수 표현식이 아니기 때문에 이 초기화는 유효하지 않습니다.

해결책

이 오류에 대한 해결책은 모든 정적 속성 또는 매개변수 선언은 컴파일 타임에 평가할 수 있는 리터럴 또는 상수 값으로 초기화됩니다. 이 경우 $appdata['id']는 상수 값이 아니므로 상수 표현식에 사용할 수 없습니다.

이 문제를 해결하는 방법에는 두 가지가 있습니다.

  1. 정적 속성 제거:
protected $dbname = 'mydb_'.$appdata['id'];
로그인 후 복사

정적 속성을 제거하면, 속성은 $appdata['id'] 변수가 정의되면 런타임에 초기화되는 동적 속성이 됩니다.

  1. 상수 문자열 사용:
private static $dbname = 'mydb_' . 'CONSTANT_STRING';
로그인 후 복사

상수 문자열을 사용하면 초기화가 컴파일 시 평가할 수 있는 상수 표현식이 됩니다.

추가 정보

정적 선언은 컴파일 중에 해결된다는 점을 이해하는 것이 중요합니다. 이는 변수 값 및 기타 동적 표현식을 상수 선언에 사용할 수 없음을 의미합니다.

위 내용은 정적 속성을 정의할 때 PHP에서 '상수 표현식에 잘못된 연산이 포함되어 있습니다' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿