基本语法未解析的解决方法
在定义具有复杂默认值的类属性时,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中文网其他相关文章!