>백엔드 개발 >PHP 튜토리얼 >PHP에서 복잡한 정적 변수를 올바르게 초기화하려면 어떻게 해야 합니까?

PHP에서 복잡한 정적 변수를 올바르게 초기화하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-27 17:44:11759검색

How Can I Properly Initialize Complex Static Variables in PHP?

PHP에서 정적 변수 초기화

PHP에서 정적 변수를 초기화할 때 초기화 프로그램의 중요하지 않은 표현식으로 인해 구문 오류가 발생할 수 있습니다. 코드 조각에서 볼 수 있듯이 아래:

private static $dates = array(
  'start' => mktime( 0,  0,  0,  7, 30, 2009),  // Start date
  'end'   => mktime( 0,  0,  0,  8,  2, 2009),  // End date
  'close' => mktime(23, 59, 59,  7, 20, 2009),  // Date when registration closes
  'early' => mktime( 0,  0,  0,  3, 19, 2009),  // Date when early bird discount ends
);

해결 방법:

한 가지 해결책은 초기화에서 복잡한 표현식을 피하고 대신 클래스를 정의한 후 값을 할당하는 것입니다.

class Foo {
  static $bar;
}
Foo::$bar = array(…);

또 다른 옵션은 정적 함수를 사용하여 초기화하는 것입니다. 변수:

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

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