PHP에서 표현식 값으로 클래스 속성을 정의하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-20 13:48:29
원래의
455명이 탐색했습니다.

How to Define Class Properties with Expression Values in PHP?

기본 구문이 구문 분석되지 않는 문제를 해결하는 방법

등호 오른쪽에 표현식을 사용하여 클래스 속성을 정의하려고 할 때, PHP에서 오류가 발생합니다. 이는 PHP가 클래스 상수 및 속성의 기본값으로 기본 값만 허용하기 때문입니다.

이 제한을 우회하려면 2단계 접근 방식을 사용할 수 있습니다.

1. 상수의 정적 배열 소개

클래스 내에 정적 배열 $_types를 정의하세요. 이 배열은 가능한 모든 상수 값을 보유합니다.

<code class="php">static protected $_types = null;</code>
로그인 후 복사

2. 상수 값을 검색하는 메서드 만들기

이름으로 상수 값을 검색할 수 있는 getType() 메서드를 구현합니다.

<code class="php">static public function getType($type_name) {
    self::_init_types();
    if (array_key_exists($type_name, self::$_types)) {
        return self::$_types[$type_name];
    } else {
        throw new Exception("unknown type $type_name");
    }
}

protected function _init_types() {
    if (!is_array(self::$_types)) {
        self::$_types = [
            'STRING_NONE' => 1 << 0,
            // ... include all constants
            'STRING_HOSTS' => 1 << 6
        ];
    }
}</code>
로그인 후 복사

3. getType()을 사용하여 클래스 속성 초기화

이제 생성자 내에서 getType() 메서드를 사용하여 클래스 속성을 초기화할 수 있습니다.

<code class="php">function __construct($fString = null) {
    if (is_null($fString)) {
        $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS');
    }
    var_dump($fString);
}</code>
로그인 후 복사

이 해결 방법을 활용하면 PHP의 구문 제한을 준수하면서 가독성과 향후 확장성을 제공합니다.

예:

<code class="php">$SDK = new SDK(SDK::getType('STRING_HOSTS'));</code>
로그인 후 복사

위 내용은 PHP에서 표현식 값으로 클래스 속성을 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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