如何在 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学习者快速成长!