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

Susan Sarandon
發布: 2024-10-20 13:47:02
原創
290 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!