문제:
PHP에서 정적 변수를 초기화하는 동안 오류가 발생합니다. private static $dates = array(...); 구문을 사용하는 코드입니다. 특히 예상치 못한 괄호와 관련된 "구문 오류"가 발생합니다.
답변:
PHP에서는 정적 변수 이니셜라이저에서 복잡한 표현식을 직접 사용할 수 없습니다. 이 제한 사항을 해결하는 두 가지 방법은 다음과 같습니다.
방법 1: 클래스 초기화 코드 사용
클래스를 정의한 후 다음 코드를 추가합니다.
class Foo { static $bar; } Foo::$bar = array(...);
방법 2: 정적 초기화 사용 방법
정적 초기화 방법을 정의하고 수동으로 호출합니다.
class Foo { private static $bar; static function init() { self::$bar = array(...); } } Foo::init();
PHP 5.6 :
PHP 5.6 이상에서는 정적 변수 이니셜라이저에서 제한된 표현식을 사용할 수 있습니다. 그러나 복잡한 표현의 경우 위의 방법이 여전히 필요할 수 있습니다. 추상 클래스의 경우 다음 구문을 사용할 수 있습니다.
abstract class Foo{ private static function bar(){ static $bar = null; if ($bar == null) bar = array(...); return $bar; } /* use where necessary */ self::bar(); }
위 내용은 PHP에서 정적 변수를 올바르게 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!