类 [DateTime ('@-1' )] 的 PHP 对象实例作为另一个类中的常量

标签 php object class-constants

我正在定义一个具有 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/

相关文章:

php - 使用 php 在网格/表格上​​编辑图像

javascript - 对象到数组返回未定义

JavaScript 动态对象

javascript - 替换检测空对象的polyfill

Php constant() 不适用于命名空间?

php - 如何将另一个文件中的变量分配给类常量?

ruby - 如何在 Ruby 中实现查找类?

php - 按组打印 php 数组项

php - 如何通过 category_id 列出子类别的名称?

php - move_uploaded_files() php 没有移动文件