【问题标题】:How is timestampable used?时间戳如何使用?
【发布时间】:2021-05-23 04:11:19
【问题描述】:

我在做测试,看到了这个功能:

Class Object{
    use Timestampable;
}
$object= new Object();
$object->setCreatedAt(new DateTime());

我认为这是一个棘手的问题,因为我在 php manual 中找不到“时间戳”。

我在stackoverflow 上看到了对它的引用,这让我很困惑它是否真的可以使用。我知道 MySQL 数据库中的时间戳,但这真的存在或在 PHP 中有用吗?

【问题讨论】:

  • 它是图书馆的一部分,它被称为 Gedmo,它又是学说的延伸。它不在标准 PHP 中,因此也没有记录。
  • 更具体地说 - 它是某些第三方库的一部分
  • 如果您想使用日期和时间戳等,请使用DateTime 类。它支持几乎任何你想要的东西。
  • github.com/Atlantic18/DoctrineExtensions/blob/HEAD//doc/… 这确实帮助我找到了文档。:) 我添加了一个链接以获取更多信息,以防其他人有这个问题。

标签: php


【解决方案1】:

问题不在于时间戳,而是测试您对抽象类、接口和特征的了解。

【讨论】:

    【解决方案2】:

    Timestampable 是所谓的trait,旨在帮助重用代码。

    假设您有一堆实体,它们都有一些共同的功能,例如他们都需要$createdAt$updatedAt 字段。您可以通过为所有实体创建一个公共基类来实现此功能,但从架构的角度来看这并不是很好。

    相反,您可以创建一个特征:

    trait Timestampable
    {
        protected DateTime $createdAt;
        protected DateTime $updatedAt;   
        ...
    }
    

    然后像这样使用它:

    class User
    {
        use Timestampable;
    }
    

    现在User 对象将具有$createdAt 字段以及在特征中定义的任何其他字段或方法,就像它们将在User 类中定义一样。这样您就不需要在所有类中重复相同的代码。

    Timestampable 是更常见的特征之一,但显然特征不限于此。 Here's an example of a more complete Timestapable trait.

    我知道这是一个 4 年前的问题,但它是 google 上的最高结果,所以认为它可能对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多