首頁 >後端開發 >php教程 >如何在 PHP 中定義具有複雜預設值的類別屬性

如何在 PHP 中定義具有複雜預設值的類別屬性

Susan Sarandon
Susan Sarandon原創
2024-10-20 13:47:02376瀏覽

How to Define Class Properties with Complex Default Values in PHP

基本語法未解析的解決方法

在定義具有複雜預設值的類別屬性時,PHP 嚴格的語法規則可能是一個障礙。雖然 (1

了解PHP 的類別宣告限制

在PHP 中,類別常數或屬性的預設值必須是原始值,例如:

const ABC = 8;
static $GHI = 15;

此限制源自於聲明性語句不應產生副作用的原則。

建立使用者定義型別並使用表達式初始化

為了克服此限制,我們可以建立使用者定義型別並使用類別宣告以外的表達式初始化它們:

class SDK {

    // Example of self-created type
    static private $STRING_NONE = 1 << 0;

}

$fString = SDK::$STRING_NONE;

重建原始類別

將此解決方法應用於原始類別範例:

class SDK {

    static private $_types = null;

    static public function getType($type_name) {
        self::_init_types();
        return self::$_types[$type_name];
    }

    static private function _init_types() {
        if (!is_array(self::$_types)) {
            self::$_types = array(
                'STRING_NONE' => 1 << 0,
                // ... rest of types here
            );
        }
    }

    function __construct($fString = null) {
        if (is_null($fString)) {
            $fString = self::getType('STRING_NONE') & self::getType('STRING_HOSTS');
        }
    }

}

$SDK =& new SDK(SDK::getType('STRING_HOSTS'));

這種方法允許我們在原始類別中其中定義和使用類型類,同時容納表達式結果的預設值。

以上是如何在 PHP 中定義具有複雜預設值的類別屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn