我正在定义一个具有 DateTime 对象作为属性之一的类。我想将其默认值设置为 unix 时间戳“-1”。我还希望这个默认值是恒定的,以便所有对象都知道它的值。
但我不想声明类似 const PROPERTY_DEFAULT_DATE = '-1';
的内容因为该属性将是一个 DateTime 对象,并且使用此默认值的操作/函数,并且如果 PROPERTY_DEFAULT_DATE 不是正确的 DateTime 对象,该属性将很难处理
那么,我可以将一个类的特定对象实例作为另一个类中的常量吗?
PHP手册说
The value must be a constant expression, not (for example) a variable, a property, a result of a mathematical operation, or a function call.
没有提到这一点,但我认为这是不可能完成的(尝试了很多变体,总是出现语法错误)
如果不可能,我还有什么替代方案?
编辑:我认为我需要找到为我的属性定义“默认值”问题的解决方案,在本例中它恰好是一个 DateTime 对象。
您将在
__construct()
中设置什么默认值? (不,请不要为空,我希望必须存在更优雅的解决方案)还要记住,它可以在类/子类内部的操作/函数中使用
更新:我按照此处的建议创建了一个
private $_DEFAULT_DATE
属性(property)和它的 setter/getter 。该属性没有 setter ,因此我可以放心它不会被更改。 (当然,我注意不要在类实现中更改它)
最佳答案
不幸的是,手册是正确的。您不能将对象放入常量中。您可以将其设为属性,或者在您的情况下,静态函数可能适合;
YourClass::getDefaultDate(); // return DateTime('-1');
关于类 [DateTime ('@-1' )] 的 PHP 对象实例作为另一个类中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321836/