首页  >  文章  >  后端开发  >  如何在 PHP 中定义具有复杂默认值的类属性

如何在 PHP 中定义具有复杂默认值的类属性

Susan Sarandon
Susan Sarandon原创
2024-10-20 13:47:02292浏览

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